WebApi: используйте другой префикс Route для резервирования http и маршрутов WebApi. - PullRequest
0 голосов
/ 21 июня 2019

У меня есть служба Windows, которая предоставляет некоторые API-интерфейсы через WebAPI и OData с использованием http.sys (для облегчения совместного использования портов):

/api
/odata
/swagger

У меня также есть резервирование с http.sys для префикса https://+:1234/.

Кроме того, у меня есть веб-сайт (SPA), который использует этот API, и я бы хотел, чтобы он работал на том же порту.До сих пор это не было проблемой, потому что у меня был статический файловый хостинг в сервисе.По разным причинам я перенес статический файловый хостинг на собственный сервис.и изменил мое резервирование 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, хотя он регистрируется с помощью http.sys на трех URL-адресах прослушивания, но всегда использует https://+:1234/ в качестве основы для маршрутизации?

1 Ответ

0 голосов
/ 21 июня 2019

Это хороший вопрос, меня пробовали по-разному ..., но у меня были те же переживания, что и у вас сейчас ...

Наконец-то я поняла, мы можем добиться вашего освобождения от сдачис помощью UrlPrefixCollection Вот URL: https://docs.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.server.httpsys.urlprefixcollection?view=aspnetcore-2.2

...