如何在服务根地址(无尾斜杠)上托管WCF REST服务?

3

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

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

    [OperationContract]
    [WebInvoke(
        Method = "GET",
        UriTemplate = "/")]
    Stream GetRootPage();
如果我运行我的服务并浏览http://localhost/MyService/,它可以正常工作。如果我浏览http://localhost/MyService,我会看到一个默认的WCF页面,指示此服务未启用元数据发布服务。 我尝试了各种UriTemplate的组合: - UriTemplate = "" - UriTemplate = "/" - UriTemplate = "*" 与服务基地址结合使用: - http://localhost/MyService - http://localhost/MyService/ 所有这些都产生相同的行为。在以前的某个时候,我确信这是有效的,尽管我认为我可能在UriTemplate中使用了子路径。我知道如果我有一个UriTemplate为“/abc/123/”,我可以浏览/abc/123(没有尾随斜杠),因为WCF实际上会自动发出HTTP 307重定向。 我正在使用.NET 4.0。
2个回答

3

我找到了如何实现这个目标:

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

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

确保帮助 URL 已禁用:

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

0

我之前看过这个,但仔细看后,我没有看到ServiceRoute代码。我的最初假设是托管在那里的服务是www.domain.com,并且使用的UriTemplate是“cars”。让我再稍微调整一下我的代码。 - Travis
仔细看了一下,这并没有回答我的问题。这是添加路由,以便多个服务基本上托管在同一个地址上。我基本上只是想在根地址(没有尾随斜杠)上托管某些内容。 - Travis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,