我正在尝试从浏览器测试我的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>
答案 0 :(得分:8)
看起来您没有在REST端点上启用<webHttp/>
行为。将其添加到配置文件中的<behaviors/>
元素中:
<endpointBehaviors>
<behavior name="REST">
<webHttp />
</behavior>
</endpointBehaviors>
然后,像这样更改<endpoint/>
元素:
<endpoint address="" binding="webHttpBinding" behaviorConfiguration="REST" contract="Wcfservice1.IService1">