【问题标题】:Rest Wcf service休息 Wcf 服务
【发布时间】:2011-08-02 23:02:45
【问题描述】:

我正在尝试从浏览器测试我的 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>

【问题讨论】:

  • 我在您的配置中找不到 &lt;webHttp/&gt; 端点行为。除非您在 Service1.svc 文件中指定了“WebServiceHostFactory”,否则这是缺失的,甚至可能是您遇到的错误的原因。
  • 真的。我在哪里添加 标签。无论 web.config 中的代码是由 VS2008 生成的。我是 wcf 的新手。你能提供一些代码吗?感谢您的帮助。
  • 。您需要从端点链接到该行为:
  • 您好,感谢您的帮助。似乎错误的问题已解决。但现在我正在显示“方法不允许”对话框。但我的方法是仅 POST,它将数据发送到 wcf,wcf 将数据保存到数据库。为什么我会收到此错误。

标签: c# wcf


【解决方案1】:

您似乎没有在 REST 端点上启用 &lt;webHttp/&gt; 行为。在配置文件的&lt;behaviors/&gt; 元素中添加这个:

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

然后,像这样更改&lt;endpoint/&gt; 元素:

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

【讨论】:

  • 您好,感谢您的帮助。似乎错误的问题已解决。但现在我正在显示“方法不允许”对话框。但我的方法是仅 POST,它将数据发送到 wcf,wcf 将数据保存到数据库。为什么我会收到此错误。
  • 您是否在服务操作中添加了[WebInvoke] 属性?在此处查看有关编写 WCF 3.5 REST 服务的介绍(您使用的是 VS 2008,对吗?):msdn.microsoft.com/en-us/library/bb412178%28v=VS.90%29.aspx
  • 是的,我做到了。这是我的 Post 方法:[OperationContract] [WebInvoke(UriTemplate = "/SaveData/{param1},{param2},{param3}", Method = "POST")] string SaveData(string param1, string param2, string param3) ;
  • 您是在浏览器中调用它,对吧?在这种情况下,请求将是 GET,而不是 POST!抱歉,之前错过了。
  • 我没找到你。你的意思是我不能从浏览器调用 Post 方法。那么我可以从哪里调用。
猜你喜欢
  • 2011-08-10
  • 2012-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-08
  • 2014-04-25
  • 2014-08-10
  • 1970-01-01
相关资源
最近更新 更多