RESTful WCF的裸机最低配置

时间:2020-03-06 14:47:12  来源:igfitidea点击:

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

解决方案

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

<endpoint address="" binding="webHttpBinding" bindingConfiguration=""
      contract="WcfCore.ICustomer">
      <identity>
        <dns value="localhost" />
      </identity>
    </endpoint>

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

Factory="System.ServiceModel.Activation.WebServiceHostFactory"

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

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

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

<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文件将替换我们的自定义主机。