我有一个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/
作为路由的基础吗?
答案 0 :(得分:0)
这是一个很好的问题,我尝试过不同的方法...,但是我现在有相同的经验。...
最后,我了解了,我们可以使用UrlPrefixCollection实现您的例外情况输出这里是Url:https://docs.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.server.httpsys.urlprefixcollection?view=aspnetcore-2.2