如何在服务根地址托管WCF REST服务(不带斜杠)?

时间:2011-09-16 20:37:48

标签: .net wcf rest wshttpbinding

我在地址上使用wsHttpBinding托管服务(主机基地址为http://localhost/MyService)。

在我的合约(IMyService)中,我有:

    [OperationContract]
    [WebInvoke(
        Method = "GET",
        UriTemplate = "/")]
    Stream GetRootPage();

如果我运行我的服务并浏览到http://localhost/MyService/,它可以正常工作。如果我浏览到http://localhost/MyService,我会看到一个默认的WCF页面,表明没有为此服务启用元数据发布服务。

我尝试过各种UriTemplate组合:

  • UriTemplate =“”
  • UriTemplate =“/”
  • UriTemplate =“*”

与服务基地址结合使用:

所有这些都会产生相同的行为。在某些时候,我可以发誓这是有效的,但我想我可能在UriTemplate中使用了一个子路径。我知道如果我有一个“/ abc / 123 /”的UriTemplate,我可以浏览到/ abc / 123(没有斜杠),因为WCF实际上会自动发出HTTP 307重定向。

我使用的是.NET 4.0。

2 个答案:

答案 0 :(得分:3)

我想出了如何做到这一点:

确保禁用默认WSDL生成(或至少不使用默认URL):

<serviceMetadata httpGetEnabled="false" httpsGetEnabled="false" />

确保已停用帮助网址:

<serviceDebug httpHelpPageEnabled="false" httpsHelpPageEnabled="false" />

答案 1 :(得分:0)

我认为您的问题已在Simple URL routes in WCF Rest 4.0 without trailing slash中得到解答。

你能核实一下吗?

相关问题