Как удалить данные «VsDebuggerCausalityData» из сообщения SOAP? - PullRequest
18 голосов
/ 28 августа 2008

У меня проблема с тем, что входящие сообщения SOAP от одного конкретного клиента помечаются как недействительные и отклоняются нашим устройством брандмауэра XML. Кажется, дополнительные данные полезной нагрузки вставляются Visual Studio; мы думаем, что дополнительные данные могут вызывать проблемы, потому что мы видим «VsDebuggerCausalityData» в этих сообщениях, но не в других, отправленных другим клиентом, у которого нет проблем. Во всяком случае, это отправная точка.

У меня вопрос: как клиент может удалить эти дополнительные данные и по-прежнему работать с VS? Почему VS это вообще там ставит?

Спасибо.

Ответы [ 5 ]

16 голосов
/ 18 июня 2010

Для удаления 'VsDebuggerCausalityData' вам нужно остановить диагностику Visual Studio для WCF с помощью этой команды:

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

Надеюсь, это поможет вам или другим людям.

11 голосов
/ 29 августа 2008

Быстрый Google показывает, что это должно избавиться от него, заставить их добавить его в web.config или app.config для своего приложения.

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

Эта информация является отладочной информацией, которую принимающая служба может использовать, чтобы помочь отследить вещи обратно клиенту. (может быть, я немного догадываюсь)

  • Я предложил продолжить вопрос , чтобы определить, откуда на самом деле произошел магический переключатель.
6 голосов
/ 06 сентября 2012

Ответ Дэррила не сработал для меня. Каждый разработчик должен ответить на вопрос ggrocco.

В итоге я написал MessageInspector и добавил этот код в метод 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;
    }
}
5 голосов
/ 25 июля 2016

На основании ответа @Luiz Felipe я придумал это несколько более надежное решение:

var vs = client.Endpoint.EndpointBehaviors.FirstOrDefault((i) => i.GetType().Namespace == "Microsoft.VisualStudio.Diagnostics.ServiceModelSink");
if (vs != null)
{
    client.Endpoint.Behaviors.Remove(vs);
}
2 голосов
/ 16 октября 2014

Или используйте «Пуск без отладки» в Visual Studio.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...