尝试使用webHttpBinding启动WCF服务时出现奇怪错误

时间:2011-03-06 16:57:31

标签: c# .net wcf

当我尝试使用webHttpBinding服务从网络浏览器连接到我的WCF时,我收到了这个奇怪的错误:

  

Sendera:ActionNotSupported由于EndpointDispatcher上的ContractFilter不匹配,无法在接收方处理带有Action''的消息。这可能是由于合同不匹配(发送方与接收方之间的操作不匹配)或发送方与接收方之间的绑定/安全性不匹配。检查发件人和收件人是否具有相同的合同和相同的约束(包括安全要求,例如邮件,传输,无)。

我的app.config:

<services>
  <service name="MyNamespace.MyService">
    <host>
      <baseAddresses>
        <add baseAddress="http://localhost:9091/MyService/" />
      </baseAddresses>
    </host>
    <endpoint address="" binding="webHttpBinding" contract="MyNamespace.IMyService" />
  </service>
</services>

我的方法看起来像这样:

[WebGet(UriTemplate = "foo/{id}")]
public string GetFoo(string id)
{ ...

2 个答案:

答案 0 :(得分:2)

好的 - 我希望你可能错过了所需的端点行为 - 试试这个配置:

<behaviors>
  <endpointBehaviors>
    <behavior name="web">
      <webHttp/>
    </behavior>
  </endpointBehaviors>
</behaviors>    
<services>
  <service name="MyNamespace.MyService">
    <host>
      <baseAddresses>
        <add baseAddress="http://localhost:9091/MyService/" />
      </baseAddresses>
    </host>
    <endpoint 
        address="" 
        behaviorConfiguration="web"
        binding="webHttpBinding" 
        contract="MyNamespace.IMyService" />
  </service>
</services>

答案 1 :(得分:0)

当您将方法从GetFoo(string fooID)更新为GetFoo(string id)时,您是否也使用更新的参数名IMyService更新了id中的合同?

您之前提问的参考:Is there a way to have custom defined friendly URLs with WCF without IIS?