我正在尝试使用自定义MessageInspector扩展我的服务端点行为,扩展工作正常并且它被选中,但前提是我没有在行为标记上定义“name”参数并且没有在端点上定义特定的behaviorConfiguration 。这意味着我正在扩展所有端点,这是我不想要的。谁能解释一下我做错了什么?
此配置不会选择myBehaviour
扩展名,也不会失败。
<system.serviceModel>
<services>
<service name="testService">
<endpoint address="http://localhost:9999/TestServiceService"
binding="wsHttpBinding"
contract="ITestService "
behaviorConfiguration="myBehaviour"
/>
<endpoint address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange"
/>
</service>
</services>
<behaviors>
<endpointBehaviors>
<behavior name="myBehaviour">
<HeaderForwardExtension />
</behavior>
</endpointBehaviors>
</behaviors>
<extensions>
<behaviorExtensions>
<add name="HeaderForwardExtension" type="Test.Service.HeaderForwardBehavior, Test.Service, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
</behaviorExtensions>
</extensions>
</system.serviceModel>
然而删除
behaviorConfiguration="myBehaviour"
并更改行为标记,使名称不存在
<behavior>
<HeaderForwardExtension />
</behavior>
工作正常。
谢谢
答案 0 :(得分:0)
听起来好像WCF根本没有接收你的服务和端点配置。可能是因为您的合同属性中有空格。因此,WCF默认为机器配置文件中定义的默认端点,这会导致应用默认行为。检查您的服务和合同名称,确保它们符合您的代码。
http://blogs.msdn.com/b/endpoint/archive/2009/06/30/service-configuration-improvements-in-net-4.aspx