VS2010 "Update Service Reference"到 WCF,其中行为扩展检查和更改消息



我使用加密的时间戳来保护web服务器中的WCF服务和"中间层"中的另一个WCF服务之间的通信。在调用服务(此交换机中的客户端)中,我使用一个DLL,该DLL的类继承了System.ServiceModel.Configuration.BehaviorExtensionElement,以提供实现System.ServiceModel.Description.IEndpointBehavior和System.ServiceModel.Dispatcher.IClientMessageInspector的功能

<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对时间戳进行解密,然后处理请求或抛出带有错误消息"Invalid stamp"的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。有些更改很简单(例如,更正方法名称"retive"->"retrieve"中的拼写错误),而有些添加了更实质的功能,我想更新客户端中的服务最近。在VS2010中,我右键单击需要更新的服务引用,然后选择"更新服务引用"。VS2010连接到中端WCF("下载服务信息"),然后抛出错误

由于以下问题,无法更新服务引用的配置:无法加载为扩展名"MessageInspectorBehavior"注册的类型"MessageInspectiorDLL.MessageInspectitorExtensionElement,MessageInspector DLL,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null"。(C:\TFS\Blah\Blah\web.config第80行)

怎么了?我是否需要为更新服务引用设置一些内容来正确使用消息检查器DLL?

尽管DLL或web.config可能存在错误,但这似乎不太可能,因为客户端将连接到Azure上的上一个中端,并且具有相同的加密时间戳检查。

我找到了答案。添加MessageInspectorDLL作为对ASP应用程序的引用为我修复了它。

相关内容

  • 没有找到相关文章

最新更新