OWIN - Selfhosting WebApi без определенного порта

1

Возможно ли использовать selfhost для службы WebApi без указания локального порта следующим образом:

Microsoft.Owin.Hosting.WebApp.Start<Startup1>("http://localhost:9000")

Я думаю, что это может быть неприятно при развертывании для клиентов (например, проблемы с брандмауэром или конфликты с другими службами, которые занимают один и тот же порт).

Я ничего не нашел. В каждом уроке/примере используется порт.

Без Owin это возможно с помощью сервиса WebApi.

Изменение: я хочу, чтобы служба вообще не использовала порт. Сервер должен запускать "inmemory", как это делается в этом блоге: asp-net-web-api-in-memory-hosting/

Теги:
asp.net-web-api
localhost
owin
self-hosting

2 ответа

2
Лучший ответ

Возможно, это решение: owin-memory-integration-testing

Это в пакете Microsoft.Owin.Testing.

Это позволит нам создать сервер с памятью, который будет принимать HTTP-запросы и выдает ответы HTTP, не касаясь сетевого стека (полностью в процессе), который является очень эффективным и чрезвычайно быстрым.

  • 0
    Если вы хотите в памяти, то вам даже не нужно вовлекать Овина. Просто подключите HttpClient к веб-API HttpServer.
  • 0
    Но чем не настроена маршрутизация, которая находится в автозагрузке или я ошибаюсь? Если это так, то я должен настроить маршруты в двух разных местах.
Показать ещё 1 комментарий
1

Переместите эту строку в файл web.config:

<appSettings>
    <add key="_API_URL" value="http://localhost:9000">
</appSettings>

Затем вы можете использовать его в своем коде:

Microsoft.Owin./*...*/(ConfigurationManager.AppSettings["_API_URL"]);

Любые настройки в файле конфигурации могут быть преобразованы во время или после развертывания без необходимости изменения кода или перестройки. Пусть "ИТ-администратор" обрабатывает брандмауэр.

  • 0
    Это может быть решением, если я должен использовать порт. Но я ищу решение, где служба работает «память» без использования какого-либо порта.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню