WebApi:对http保留和WebApi路由使用不同的Route前缀

时间:2019-06-21 11:08:44

标签: asp.net-web-api http.sys

我有一个Windows服务,该服务使用http.sys通过WebAPI和OData公开了一些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/作为路由的基础吗?

1 个答案:

答案 0 :(得分:0)

这是一个很好的问题,我尝试过不同的方法...,但是我现在有相同的经验。...

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