3

我有一个在地址上使用 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。

4

2 回答 2

3

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

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

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

确保禁用帮助 URL:

<serviceDebug httpHelpPageEnabled="false" httpsHelpPageEnabled="false" />
于 2012-10-04T04:43:31.833 回答
0

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

你能证实吗?

于 2011-09-16T21:09:30.463 回答