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】:

&lt;endpoint address /&gt;标签中添加行为配置

  <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 不匹配(错误处理)

EndpointDispatcher 错误处的 WCF ContractFilter 不匹配

红移中的 PERCENTILE_CONT()