【问题标题】:Bare Minimum Configuration for RESTful WCFRESTful WCF 的最低配置
【发布时间】:2010-09-13 11:31:35
【问题描述】:

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

【问题讨论】:

    标签: .net asp.net wcf rest web-config


    【解决方案1】:

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

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

    【讨论】:

    • 我试过了,但收到一条错误消息:“...EndpointDispatcher 的地址过滤器不匹配。”原来你还需要在你的行为中添加WebHttpBehavior,但是我不知道如何在web.config中做到这一点。
    【解决方案2】:

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

    Factory="System.ServiceModel.Activation.WebServiceHostFactory"
    

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

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

    【讨论】:

    • 整个“部分”。我是新手。你可以说得更详细点吗? ...端点>?
    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多