0

我有一个 Windows 服务,它通过 WebAPI 和 OData 使用 http.sys 公开一些 API(以促进端口共享):

/api
/odata
/swagger

我也对前缀 http.sys 有保留https://+:1234/

此外,我有一个使用此 API 的网站 (SPA),我希望它在同一端口上运行。到目前为止,这没问题,因为我在服务中有静态文件托管。由于各种原因,我将静态文件托管移动到了它自己的服务中。并将我的 http.sys 预订更改为:

静态文件托管(弱通配符):

https://*:1234/

服务(强通配符):

https://+:1234/api/
https://+:1234/swagger/
https://+:1234/odata

在我的服务中,我改变了我的

WebApp.Start("https://+:1234", Startup);

var options = new StartOptions
{
    urls =
    {
        "https://+:1234/api/",
        "https://+:1234/swagger/",
        "https://+:1234/odata/",
    }
};
_Service = WebApp.Start(options, Startup);

但是,现在到 WebApi 的路由是https://+:1234/api/api/并且我什至可以使用https://+:1234/api/odata/,这是可以理解的,但不是我想要的。

我可以欺骗 WebApi,虽然它在三个侦听 url 上向 http.sys 注册自己,但始终https://+:1234/用作路由的基础?

4

1 回答 1

0

这是一个很好的问题,我尝试了不同的方法......,但我有同样的经历你现在得到的......

最后,我明白了,我们可以使用 UrlPrefixCollection 实现您的异常输出 这是 Url :https://docs.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.server.httpsys.urlprefixcollection?view=aspnetcore-2.2

于 2019-06-21T15:09:13.683 回答