VS2010 «Обновление справочника услуг» до WCF, где расширения поведения проверяют и изменяют сообщения - PullRequest
0 голосов
/ 03 марта 2012

Я использую зашифрованную временную метку для защиты связи между службой 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 Ответ

0 голосов
/ 04 сентября 2012

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

...