EndpointDispatcher 的 ContractFilter 不匹配?
Posted
技术标签:
【中文标题】EndpointDispatcher 的 ContractFilter 不匹配?【英文标题】:ContractFilter mismatch at the EndpointDispatcher? 【发布时间】:2013-02-21 01:41:59 【问题描述】:在这里,我从浏览器中托管的 RESTful 服务调用该方法
https://eshop/LinkService/LinkService.svc/GetStudentObj
并得到以下错误
The message with Action '' cannot be processed at the receiver, due to a ContractFilter mismatch at the EndpointDispatcher. This may be because of either a contract mismatch (mismatched Actions between sender and receiver) or a binding/security mismatch between the sender and the receiver. Check that sender and receiver have the same contract and the same binding (including security requirements, e.g. Message, Transport, None)
配置文件
<system.serviceModel>
<services>
<service name="LinkService.LinkService" behaviorConfiguration="MyServiceBehavior">
<endpoint address="" binding="webHttpBinding" bindingConfiguration="https" contract="LinkService.ILinkService" />
<endpoint contract="IMetadataExchange" binding="mexHttpsBinding" address="mex" />
</service>
</services>
<bindings>
<webHttpBinding>
<binding name="https">
<security mode="Transport">
<transport clientCredentialType="None" />
</security>
</binding>
</webHttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="MyServiceBehavior">
<!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
<serviceMetadata httpGetEnabled="false" httpsGetEnabled="true"/>
<!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information -->
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="web">
<webHttp/>
</behavior>
</endpointBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="false" multipleSiteBindingsEnabled="true"/>
<standardEndpoints>
<webHttpEndpoint>
<standardEndpoint name="" helpEnabled="true" automaticFormatSelectionEnabled="true"/>
</webHttpEndpoint>
</standardEndpoints>
</system.serviceModel>
和
public Student GetStudent()
Student stdObj = new Student
StudentName = "Bala",
Age = 29,
Mark = 95
;
return stdObj;
和
[ServiceContract]
public interface ILinkService
[OperationContract]
[WebInvoke(Method = "GET", UriTemplate = "/GetStudentObj", BodyStyle = WebMessageBodyStyle.Bare, RequestFormat = WebMessageFormat.Json,ResponseFormat = WebMessageFormat.Json)]
Student GetStudent();
有什么建议吗?
【问题讨论】:
为了什么值得,这个answer可能有用 【参考方案1】:在<endpoint address />
标签中添加行为配置
<endpoint address="" binding="webHttpBinding" bindingConfiguration="https" contract="LinkService.ILinkService" behaviorConfiguration="web"/>
【讨论】:
这个q和a间接帮助了我,所以大家都赞成。以上是关于EndpointDispatcher 的 ContractFilter 不匹配?的主要内容,如果未能解决你的问题,请参考以下文章
由于 EndpointDispatcher 的 ContractFilter 不匹配,接收方无法处理带有 Action '' 的消息。
EndpointDispatcher 的 ContractFilter 不匹配?
EndpointDispatcher 处的 AddressFilter 不匹配 - 带有 To 的 msg
EndpointDispatcher 的 ContractFilter 不匹配(错误处理)