2008-08-28 8 views
14

Tengo un problema donde los mensajes SOAP entrantes de un cliente en particular se marcan como no válidos y son rechazados por nuestro dispositivo de firewall XML. Parece que Visual Studio está insertando datos adicionales de la carga útil; creemos que los datos adicionales pueden estar causando un problema, si vemos "VsDebuggerCausalityData" en estos mensajes, pero no en otros enviados por un cliente diferente que no tiene problemas. Es un punto de partida, de todos modos.¿Cómo eliminar los datos de "VsDebuggerCausalityData" del mensaje SOAP?

La pregunta que tengo es ¿cómo puede el cliente eliminar esta información adicional y aún ejecutar desde VS? ¿Por qué VS lo está poniendo allí?

Gracias.

Respuesta

10

Un google rápido revela que esto debería deshacerse de él, consigue que lo agreguen a la web.config o app.config para su aplicación.

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

La información es información de depuración que el servicio de recepción puede utilizar para ayudar a las cosas traza de vuelta al cliente. (Tal vez, estoy adivinando un poco)

  • he propuesto un seguimiento para determinar question eran el interruptor de magia viene en realidad de.
+3

Esto está fallando para mí en .NET 4.0. Agregué esta sección a mi archivo de configuración, y ahora el cliente está lanzando una excepción en la creación de instancias. –

13

de Remove 'VsDebuggerCausalityData' que necesita parar de Visual Studio de diagnóstico para WCF utilizando este comando:

VS 2008 -> c: \ Archivos de programa \ Microsoft Visual Studio 9.0 \ Common7 \ IDE> vsdiag_regwcf.exe -u VS 2010 -> c: \ Archivos de programa \ Microsoft Visual Studio 10.0 \ Common7 \ IDE> vsdiag_regwcf.exe -u

Espero que esto los ayude a ustedes u otras personas.

+0

VS 2015 es C: \ Archivos de programa \ Microsoft Visual Studio 12.0 \ Common7 \ IDE \ vsdiag_regwcf.exe -u – CheeZe5

5

La respuesta de Darryl no funcionó para mí. Cada desarrollador tiene que hacer la respuesta de ggrocco.

terminé escribiendo un MessageInspector, y añadiendo este código al método BeforeSendRequest:

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

o use "Iniciar sin depurar" en Visual Studio.

+0

El nodo 'VsDebuggerCausalityData' todavía se incluye en versiones de lanzamiento. –

2

Basado en una respuesta por @Luiz Felipe me ocurrió con esta solución ligeramente más robusto:

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