Pergunta

Eu tenho um problema onde as mensagens SOAP recebidas de um cliente específico estão sendo marcadas como inválidas e rejeitadas pelo nosso dispositivo de firewall XML.Parece que dados extras de carga útil estão sendo inseridos pelo Visual Studio;estamos pensando que os dados extras podem estar causando um problema porque estamos vendo "VsDebuggerCausalityData" nessas mensagens, mas não em outras enviadas de um cliente diferente que não está tendo problemas.É um ponto de partida, de qualquer maneira.

A dúvida que tenho é como o cliente pode remover esses dados extras e ainda rodar no VS?Por que o VS está colocando isso lá?

Obrigado.

Foi útil?

Solução

Um rápido Google revela que isso deve eliminá-lo, fazer com que eles o adicionem ao web.config ou app.config para seu aplicativo.

<configuration>
  <system.diagnostics>
    <switches>
       <add name="Remote.Disable" value="1" />
    </switches>
  </system.diagnostics>
</configuration> 

As informações são informações de depuração que o serviço de recebimento pode usar para ajudar a rastrear as coisas até o cliente.(talvez, eu esteja supondo um pouco)

  • Eu propus um acompanhamento pergunta para determinar de onde realmente vem o interruptor mágico.

Outras dicas

Para remover 'VsDebuggerCausalityData' você precisa parar o Visual Studio Diagnostic para WCF usando este comando:

VS 2008 -> C: Arquivos de programas Microsoft Visual Studio 9.0 Common7 IDE> vsdiag_regwcf.exe -u vs 2010 -> C: Arquivos de programas Microsoft Visual Studio 10.0 Common7 ide> vsdiag_regwcf.exe -u -u

Espero que isso ajude você ou outras pessoas.

A resposta de Darryl não funcionou para mim.Cada desenvolvedor deve responder à resposta do ggrocco.

Acabei escrevendo um Inspetor de mensagens, e adicionando este código ao Antes de enviar solicitação método:

int limit = request.Headers.Count;
for(int i=0; i<limit; ++i)
{
    if (request.Headers[i].Name.Equals("VsDebuggerCausalityData"))
    {
        request.Headers.RemoveAt(i);
        break;
    }
}

Com base em uma resposta de @Luiz Felipe Eu criei esta solução um pouco mais robusta:

var vs = client.Endpoint.EndpointBehaviors.FirstOrDefault((i) => i.GetType().Namespace == "Microsoft.VisualStudio.Diagnostics.ServiceModelSink");
if (vs != null)
{
    client.Endpoint.Behaviors.Remove(vs);
}

Ou use “Iniciar sem depuração” no Visual Studio.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top