6

为了让 WCF 与 REST 一起工作,我需要在 web.config 中添加的最低限度是多少?我已经用 [WebGet] 注释了我的方法,但他们没有收到消息。

4

3 回答 3

6

我发现您可以在 *.svc 文件中的 ServiceHost 指令中添加以下内容,它会自动为您设置 WebHttpBinding 和 WebHttpBehavior:

Factory="System.ServiceModel.Activation.WebServiceHostFactory"

请注意,命名空间与网络上其他地方(例如在此 MSDN 文章中)提到的名称略有不同。

完成此操作后,我能够从 web.config 中删除整个部分,一切仍然有效!

于 2008-09-26T14:54:16.273 回答
2

确保在端点上使用 webHttpBinding(而不是 httpBinding 或 wsHttpBinding)。这是我的端点配置...

    <endpoint address="" binding="webHttpBinding" bindingConfiguration=""
      contract="WcfCore.ICustomer">
      <identity>
        <dns value="localhost" />
      </identity>
    </endpoint>
于 2008-09-26T14:44:54.113 回答
1

您需要确保您有服务主机的地址,例如

<services>
      <service name="SomeLib.SomeService">
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:8080/somebase"/>
          </baseAddresses>
        </host>
<!-- And one EndPoint **basicHttpBinding** WILL WORK !!! -->

        <endpoint 
                   address="basic"
                   binding="basicHttpBinding"
                   contract="SomeLib.SomeContract"/>
</service>
</services>

所以现在,如果您通过控制台应用程序进行自我托管,例如......您可以通过以下方式调用您的主机:

WebChannelFactory<IServiceContract> factory =
        new WebChannelFactory<IServiceContract>(
            new Uri("http://localhost:8080/somebase"));

当控制台应用程序启动时,该地址将是可浏览的,即使它是自托管的,并且您应该能够根据您的 webget uri 模板调用您的操作。

此最低配置将允许您通过自托管调用 WCF RestFULLY。如果您在 IIS 中托管,则它基本上以相同的方式工作,除了 svc 文件替换了我们的自定义主机。

于 2008-09-26T15:00:11.907 回答