Question

J'ai un problème où les messages SOAP entrants d'un client particulier sont marqués comme invalides et rejetés par notre pare-feu XML.Il semble que des données de charge utile supplémentaires soient insérées par Visual Studio ;nous pensons que les données supplémentaires peuvent causer un problème car nous voyons "VsDebuggerCausalityData" dans ces messages mais pas dans d'autres envoyés par un client différent qui n'a pas de problème.C'est en tout cas un point de départ.

La question que je me pose est de savoir comment le client peut-il supprimer ces données supplémentaires tout en continuant à fonctionner à partir de VS ?Pourquoi VS le met-il là-dedans ?

Merci.

Était-ce utile?

La solution

Un rapide google révèle que cela devrait s'en débarrasser, demandez-leur de l'ajouter au web.config ou app.config pour leur application.

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

Les informations sont des informations de débogage que le service de réception peut utiliser pour aider à remonter jusqu'au client.(peut-être, je suppose un peu)

  • J'ai proposé une suite question pour déterminer d'où vient réellement l'interrupteur magique.

Autres conseils

Pour supprimer « VsDebuggerCausalityData », vous devez arrêter Visual Studio Diagnostic for WCF à l'aide de cette commande :

Vs 2008 -> C: Program Files Microsoft Visual Studio 9.0 Common7 ide> vsdiag_regwcf.exe -u vs 2010 -> C: Program Files Microsoft Visual Studio 10.0 Common7 ide> vsdiag_regwcf.exe -u

J'espère que cela vous aidera, vous ou d'autres personnes.

La réponse de Darryl n'a pas fonctionné pour moi.Chaque développeur doit répondre à la réponse de ggrocco.

J'ai fini par écrire un Inspecteur de messages, et en ajoutant ce code au AvantEnvoyerRequête méthode:

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

Sur la base d'une réponse de @Luiz Felipe J'ai trouvé cette solution légèrement plus robuste :

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

Ou utilisez « Démarrer sans débogage » dans Visual Studio.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top