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 исправило это для меня.