2008-08-28 22 views
14

Ho un problema in cui i messaggi SOAP in arrivo da un particolare client vengono contrassegnati come non validi e rifiutati dal nostro dispositivo firewall XML. Sembra che i dati di payload aggiuntivi vengano inseriti da Visual Studio; stiamo pensando che i dati extra potrebbero causare un problema b/c, stiamo vedendo "VsDebuggerCausalityData" in questi messaggi ma non in altri inviati da un altro client che non ha problemi. È comunque un punto di partenza.Come rimuovere i dati "VsDebuggerCausalityData" dal messaggio SOAP?

La domanda che ho è come può il client rimuovere questi dati aggiuntivi ed eseguire ancora da VS? Perché VS lo sta mettendo lì?

Grazie.

risposta

10

Un rapido google rivela che questo dovrebbe sbarazzarsi di esso, convincerli ad aggiungerlo a web.config o app.config per la loro applicazione.

Le informazioni sono informazioni di debug che il servizio di ricezione può utilizzare per aiutare a rintracciare le cose al cliente. (forse, suppongo un po ')

  • Ho proposto un follow-up question per determinare se l'interruttore magico provenga effettivamente.
+3

Questo sta fallendo per me in .NET 4.0. Ho aggiunto questa sezione al mio file di configurazione e ora il client lancia un'eccezione sulla creazione di istanze. –

13

per Remove 'VsDebuggerCausalityData' è necessario smettere di de Visual Studio diagnostica per WCF utilizzare questo comando:

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

Spero che questo aiuti voi o altre persone.

+0

VS 2015 è C: \ Programmi \ Microsoft Visual Studio 12.0 \ Common7 \ IDE \ vsdiag_regwcf.exe -u – CheeZe5

5

La risposta di Darryl non ha funzionato per me. Ogni sviluppatore deve fare la risposta di ggrocco.

ho finito per scrivere una MessageInspector, e l'aggiunta di questo codice al metodo 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

Oppure utilizzare "Avvia senza eseguire debug" in Visual Studio.

+0

Il nodo 'VsDebuggerCausalityData' è ancora incluso nelle versioni di rilascio. –

2

sulla base di una risposta da parte @Luiz Felipe mi si avvicinò con questa soluzione un po 'più robusto:

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