VS2010 "Обновление справочника услуг" до WCF, где расширения поведения проверяют и изменяют сообщения

Я использую зашифрованную временную метку для защиты связи между службой WCF на моем веб-сервере и службой промежуточного уровня. В вызывающей службе (клиент в этом обмене) я использую DLL, чей класс наследует System.ServiceModel.Configuration.BehaviorExtensionElement для обеспечения функциональности, реализующей System.ServiceModel.Description.IEndpointBehavior и System.ServiceModel.Dispatcher.IClientMessageInspector. Это приклеено через файл web.config с разделами

<extensions>
 <behaviorExtensions>
  <add name="MessageInspectorBehavior" type="MessageInspectorDLL.MessageInspectorBehaviorExtensionElement, MessageInspectorDLL, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
 </behaviorExtensions>
</extensions>

<endpointBehaviors>
  <behavior name="MessageInspectorEndpointBehavior">
    <MessageInspectorBehavior />
  </behavior>
</endpointBehaviors>

а затем они подключаются к WCF среднего уровня с записями, подобными этой

<client>
  <endpoint address="http://blah.cloudapp.net:8080/BlahService.svc"
    behaviorConfiguration="MessageInspectorEndpointBehavior" binding="customBinding"
    bindingConfiguration="CustomBinding_BlahService"
    contract="BlahServiceReference.BlahService"
    name="CustomBinding_BlahService" />

На среднем уровне есть похожая история с System.ServiceModel.Dispatcher.IClientMessageInspector, которая расшифровывает отметку времени и либо обрабатывает запрос, либо выдает исключение System.ServiceModel.FaultException с сообщением об ошибке "Неверная отметка".

Это следует за примерами кода на http://msdn.microsoft.com/en-us/library/ms733747.aspx и http://weblogs.asp.net/paolopia/archive/2007/08/23/writing-a-wcf-message-inspector.aspx

Теперь я сменил WCF среднего уровня. Некоторые изменения просты (например, исправление орфографической ошибки в имени метода "retrive" -> "retrieve"), в то время как некоторые добавляют более существенную функциональность, и я хочу обновить приемы службы в клиенте. В VS2010 я щелкаю правой кнопкой мыши по сервисным ссылкам, которые необходимо обновить, и выбираю "Обновить сервисную ссылку". VS2010 подключается к WCF среднего уровня ("загрузка служебной информации") и затем выдает ошибку

Не удалось обновить конфигурацию для ссылки на службу из-за следующей проблемы: не удалось загрузить тип 'MessageInspectorDLL.MessageInspectorExtensionElement, MessageInspectorDLL, версия =1.0.0.0, Culture= нейтральный, PublicKeyToken=null', зарегистрированный для расширения 'MessageInspectorBehavior'. (C:\TFS\Blah\Blah\web.config строка 80)

В чем дело? Есть ли что-то, что мне нужно настроить для справки службы обновлений, чтобы правильно использовать DLL инспектора сообщений?

Хотя возможно, что в DLL или файле web.config есть ошибки, которые кажутся маловероятными, поскольку клиент подключится к предыдущему промежуточному уровню, установленному в Azure, и с такой же проверкой зашифрованной отметки времени.

1 ответ

Решение

Я нашел ответ. Добавление MessageInspectorDLL в качестве ссылки на приложение ASP исправило это для меня.

Другие вопросы по тегам