Domanda

Ho un problema per cui i messaggi SOAP in arrivo da un particolare client vengono contrassegnati come non validi e rifiutati dal nostro dispositivo firewall XML.Sembra che Visual Studio stia inserendo dati aggiuntivi sul payload;pensiamo che i dati aggiuntivi potrebbero causare un problema perché stiamo vedendo "VsDebuggerCausalityData" in questi messaggi ma non in altri inviati da un client diverso che non ha problemi.È un punto di partenza, comunque.

La domanda che ho è: come può il client rimuovere questi dati aggiuntivi ed essere comunque eseguito da VS?Perché VS lo inserisce lì?

Grazie.

È stato utile?

Soluzione

Una rapida ricerca su Google rivela che questo dovrebbe eliminarlo, convincerli ad aggiungerlo a web.config o app.config per la loro applicazione.

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

Le informazioni sono informazioni di debug che il servizio ricevente può utilizzare per risalire al client.(forse, immagino un po')

  • Ho proposto un seguito domanda per determinare da dove proviene effettivamente l'interruttore magico.

Altri suggerimenti

Per rimuovere "VsDebuggerCausalityData" è necessario arrestare Visual Studio Diagnostic per WCF utilizzando 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 -u

Spero che questo aiuti te o altre persone.

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

Ho finito per scrivere a Ispettore dei messaggi, e aggiungendo questo codice al file Prima di inviare richiesta metodo:

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

Sulla base di una risposta di @Luiz Felipe Ho trovato questa soluzione leggermente più robusta:

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

Oppure usa "Avvia senza eseguire il debug" in Visual Studio.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top