Я разработал простой веб-API с ASP.NET Core 2.2, который имеет Swagger UI (через Swashbuckle).Я назову это «my_api» здесь.
Я использую Visual Studio 2017 для Windows 7. Для разработки.
Это веб-приложение хорошо работает на моем локальном хосте при разработке (конечно).
http://localhost:5000/swagger
Этот URL откроет интерфейс пользователя.
http://localhost:5000/api/[endpoints]
Эти конечные точки URL будут получать различные ресурсы из базы данных.
Что яхочу достичь (не уверен, если это возможно):
Я хочу развернуть это веб-приложение на Windows Server 2012 под управлением IIS 8, на котором уже работают три других относительно статических веб-сайта.
Я хочу развернуть сборку в папке ("my_api_folder") в "wwwroot" на этом сервере.Затем:
http://www.server-domain.com/my_api_folder/swagger
откроет пользовательский интерфейс swagger.
http://www.server-domain.com/my_api_folder/api/[endpoints]
вызовет мои различные конечные точки API.
Что я сделал:
Я создаю (публикую) веб-приложение, используя VS 2017, в папку.
Я строю его как автономное развертывание (SCD), надеясь, что его будет проще развернуть.
Используемая мной цель сборки (RID) - win-x64.
После завершения процесса сборки у меня есть один исполняемый файл ("my_api.exe"), несколько библиотек DLL и другие.Файлы assets / config в папке «publish». Сгенерировано .Net Core.
Я могу запустить этот исполняемый файл на моей локальной машине, дважды щелкнув по нему.Он прослушивает localhost: 5000 и все работает хорошо.
Затем я развертываю (копирую и вставляю) все файлы сборки в папку "my_api_folder" на сервере.
Проблемы, с которыми я сталкиваюсь:
После развертывания оба
http://www.server-domain.com/my_api_folder/swagger
и
http://www.server-domain.com/my_api_folder/api/[endpoints]
вернут 500 Internal Server Error.
Затем я пытаюсь дважды щелкнуть исполняемый файл на сервере, он запустится.(Показывает прослушивание на localhost: 5000).
Однако я не могу открыть http://localhost:5000/swagger (или http://127.0.0.1:5000/swagger) на сервере или вызвать API. (404 Не найдено набраузер IE сервера.)
Я также не могу получить доступ к этим маршрутам извне сервера. Но на этот раз он долго зависает и в итоге показывает, что шлюз не отвечает.
Но
netstat -a -o -n
показывает, что my_api.exe действительно прослушивает порт 5000 после того, как я запустил исполняемый файл вручную.
Мое описание, вероятно, везде. Я чувствую, что мне не хватает некоторого ключазнание, чтобы сделать эту работу здесь.
Пожалуйста, посоветуйте, как мне отладить это?
В чем могут быть причины?
Если вам нужна дополнительная информация, пожалуйста, дайте мне знатьтоже.
Спасибо.