2011-06-13 92 views
0

我有一个wcf安宁服务启动并运行。如果我使用WebServiceHost启动webservice,我可以发出Get/Post没有问题。我尝试将wcf服务移动到本地盒子上的IIS 7.5上,但似乎无法完成。WCF Restful Service .NET 4 IIS 7.5问题(无法处理Action'消息)

我不断收到以下错误,我尝试从wcf服务中调用任何东西:(http:// wp9dbytr1k1:8081/service.svc/AnythingHereForGETorPUT)。我在虚拟目录/设备上尝试过,并且遇到同样的问题。

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). 

,如果我直接调用SVC文件(HTTP:// wp9dbytr1k1:8081/service.svc),它的快乐,并告诉我

“你已经创建了一个服务 为了测试这项服务。 ,你需要创建一个客户端,并使用它来调用服务,您可以使用从以下语法命令行工具的svcutil.exe做: svcutil.exe的http://wp9dbytr1k1:8081/FUU/service.svc?wsdl

的痕迹STRACK从跟踪查看器没有帮助:对不起,必须添加一个链接,不允许发布图片。 (ImageLink)

这里是我的web.config

<system.serviceModel> 
    <bindings> 
     <mexHttpsBinding> 
     <binding name="NewBinding0" /> 
     </mexHttpsBinding> 
     <webHttpBinding> 
     <binding name="WebBinding"> 
      <readerQuotas maxDepth="524288" maxStringContentLength="524288" 
      maxArrayLength="524288" maxBytesPerRead="524288" maxNameTableCharCount="524288" /> 
      <security mode="None"> 
      <transport clientCredentialType="None" proxyCredentialType="None" /> 
      </security> 
     </binding> 
     </webHttpBinding> 
    </bindings> 
    <services> 
     <service behaviorConfiguration="StoredProcBehaviors" name="StoredProcService.DataRetreivalService"> 
     <endpoint address="" binding="webHttpBinding" bindingConfiguration="WebBinding" 
      contract="StoredProcService.IDataRetreivalService"> 
      <identity> 
      <dns value="locahost" /> 
      </identity> 
     </endpoint> 
     <endpoint address="mex" binding="mexHttpBinding" bindingConfiguration="" 
      contract="StoredProcService.IDataRetreivalService" /> 
     <host> 
      <baseAddresses> 
      <add baseAddress="http://WP9DBYTR1K1:8081/" /> 
      </baseAddresses> 
     </host> 
     </service> 
    </services> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name="StoredProcBehaviors"> 
      <serviceMetadata httpGetEnabled="true"/> 
      <serviceDebug includeExceptionDetailInFaults="true" /> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 

出于显而易见的原因,这种感觉就像IIS设置,因为它与WebServiceHost工作。我已经搜索了关于如何设置这些的错误/教程,并且对我来说一切似乎都很好。

有什么建议吗?

感谢

回答

4

要创建一个WCF REST端点,你需要的,除了使用的WebHttpBinding,有与它的终结点行为。

<system.serviceModel> 
    <services> 
     <service behaviorConfiguration="StoredProcBehaviors" name="StoredProcService.DataRetreivalService"> 
     <endpoint address="" binding="webHttpBinding" bindingConfiguration="WebBinding" behaviorConfiguration="REST" 
      contract="StoredProcService.IDataRetreivalService"> 
      <identity> 
      <dns value="locahost" /> 
      </identity> 
     </endpoint> 
     </service> 
    </services> 
    <behaviors> 
     <endpointBehaviors> 
     <behavior name="REST"> 
      <webHttp/> 
     </behavior> 
     <endpointBehaviors> 
    </behaviors> 
    </system.serviceModel> 

另一种选择是使用WebServiceHostFactory在.svc文件,它的工作方式类似于WebServiceHost。在这种情况下,您甚至不需要web.config中的system.serviceModel部分。

<% @ServiceHost Service="StoredProcService.DataRetreivalService" Factory="System.ServiceModel.Activation.WebServiceHostFactory" Language="C#" debug="true" %> 
+0

哇......那简单的呃?谢谢! – NickD 2011-06-13 16:55:40