休息Wcf服务

时间:2011-08-02 23:02:45

标签: c# wcf

我正在尝试从浏览器测试我的Rest Wcf服务。 当我试图从浏览器发送一些值时,我收到以下错误。 “消息无法在接收方处理, 由于EndpointDispatcher上的AddressFilter不匹配 检查发送方和接收方的EndpointAddresses是否一致。“

然后我添加了[ServiceBehavior(AddressFilterMode = AddressFilterMode.Any)]。 然后我得到了一个不同的错误。

“由于EndpointDispatcher上的ContractFilter不匹配。 这可能是因为合同不匹配 (发送者和接收者之间不匹配的行为)或 发件人和收件人之间的绑定/安全性不匹配 检查发件人和收件人是否具有相同的合同和相同的绑定 (包括安全要求,例如消息,传输,无)。“

我们可以从浏览器传递值到Rest Wcf服务吗?

我正在尝试从浏览器传递以下值。

http://mywebsite/Service1.svc/mymethod/Firstname,Lastname,LosAngles,CA

这是我的web.confg文件

<system.serviceModel>
    <services>              
      <service behaviorConfiguration="Wcfservice1.ServiceBehavior" name="="Wcfservice1.Service1">
        <endpoint address="" binding="webHttpBinding" contract="Wcfservice1.IService1">
          <identity>
            <dns value="localhost" />
          </identity>
        </endpoint>
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
      </service>
    </services>    
    <behaviors>
      <serviceBehaviors>        
        <behavior name="Wcfservice1.ServiceBehavior">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="false" />
        </behavior>
      </serviceBehaviors>
    </behaviors>    
  </system.serviceModel>

1 个答案:

答案 0 :(得分:8)

看起来您没有在REST端点上启用<webHttp/>行为。将其添加到配置文件中的<behaviors/>元素中:

  <endpointBehaviors>
    <behavior name="REST">
      <webHttp />
    </behavior>
  </endpointBehaviors>

然后,像这样更改<endpoint/>元素:

<endpoint address="" binding="webHttpBinding" behaviorConfiguration="REST" contract="Wcfservice1.IService1">