0

I have a Windows Service which exposes some APIs via WebAPI and OData using http.sys (to facilitate port sharing):

/api
/odata
/swagger

I also have reservation with http.sys for the prefix https://+:1234/.

Additionally, I have a web site (SPA) which uses this API and I'd like it to run on the same port. UP to now, this was no problem, because I had static file hosting in the service. For various reasons, I moved the static file hosting to its own service. and changed my http.sys reservation to this:

Static file hosting (Weak wildcard):

https://*:1234/

Service (strong wildcard):

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

And in my service I changed my

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

to

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

However, now the routes to the WebApi are https://+:1234/api/api/ and I can even use https://+:1234/api/odata/, which is kind of understandable, but not what I intended.

Can I trick WebApi that while it registers itself with http.sys on the three listening urls but always uses https://+:1234/ as the base for the routing?

Henning Krause
  • 5,302
  • 3
  • 24
  • 37

1 Answers1

0

This is nice question, I was tried different ways ..., But I had same experiences what you got right now....

Finally, I have understand, We can achieve your excepted out put with the UrlPrefixCollection Here is Url : https://learn.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.server.httpsys.urlprefixcollection?view=aspnetcore-2.2