VS2010“更新服务引用”到WCF,其中行为扩展检查和更改消息

时间:2012-03-02 23:48:06

标签: wcf visual-studio-2010 idispatchmessageinspector

我正在使用加密时间戳来保护我的网络服务器中的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,并显示错误消息“Invalid stamp”。

以下是http://msdn.microsoft.com/en-us/library/ms733747.aspxhttp://weblogs.asp.net/paolopia/archive/2007/08/23/writing-a-wcf-message-inspector.aspx

的代码示例

现在我已经改变了中间层WCF。一些更改很简单(例如,修正方法名称中的拼写错误“retrive” - &gt;“retrieve”),而某些更改会增加更多实质性功能,我想更新客户端中的服务访问。在VS2010中,我右键单击需要更新的服务引用,然后选择“更新服务引用”。 VS2010连接到中间层WCF(“下载服务信息”),然后抛出错误

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

怎么了?我是否需要设置更新服务引用以正确使用消息检查器DLL?

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

1 个答案:

答案 0 :(得分:0)

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