Удалить ActivityId из запроса WCF - PullRequest
9 голосов
/ 25 января 2012

У меня интересная проблема совместимости между клиентом WCF и веб-службой Java. Короче говоря, я обнаружил, что способ генерирования заголовка вызывает проблему - элементы ActivityId и Action в заголовке, а также то, что WCF делает с пространством имен настраиваемого заголовка, вызывает проблемы. Я успешно использовал WSDL с wsdl.exe, но WCF, похоже, манипулирует заголовком так, как это не нравится веб-службе Java. Есть ли способ настроить привязки для клиента WCF, чтобы они не отправляли элементы ActivityId и Action?

Ответы [ 2 ]

10 голосов
/ 25 января 2012

У вас включена трассировка в клиенте?Я думаю, что это то, что добавляет идентификатор активности, поскольку он пытается передать действие отслеживания в службу для сквозного отслеживания.Выключите флаг отслеживания активности, и он должен исчезнуть - см. Мой комментарий к заголовку действия

5 голосов
/ 30 января 2015

Эта проблема обычно возникает, когда клиент WCF пытается подключиться к серверу, не относящемуся к WCF, например, JAX-WS, Websphere и т. Д.

Просто для добавления к спасительному ответу Ричарда и адреса @ комментария irperez, фактическогонастройки, которые необходимо отключить, чтобы предотвратить добавление ActivityId диагностики WCF во время диагностической трассировки WCF:

  • Удалить ActivityTracing из switchvalue
  • Установить propagateActivityна false

т.е. изменить

<system.diagnostics>
  <sources>
    <source name="System.ServiceModel" switchValue="Information, ActivityTracing"
            propagateActivity="true">
    <listeners>
      <add name="xml"/>
    </listeners>
  </source>
...

на:

<source name="System.ServiceModel" switchValue="Information" 
        propagateActivity="false">
  <listeners>
    <add name="xml"/>
  </listeners>

Если ActivityId включено, оновставляет нижеследующее в заголовки SOAP, которые могут сломать ничего не подозревающие серверы:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
  <s:Header>
    <ActivityId CorrelationId="5de75017-da08-4ac2-84f2-5374953cc2a1" 
         xmlns="http://schemas.microsoft.com/2004/09/ServiceModel/Diagnostics">
      9f076849-e76e-4675-84c1-5026b1c2eb1a
    </ActivityId>
  </s:Header>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...