将带有Swagger UI的ASP.NET Core Web API部署到承载其他多个网站的Windows Server 2012(IIS 8)

问题描述 投票:0回答:1

我已经使用ASP.NET Core 2.2开发了一个简单的Web API,该API具有Swagger UI(通过Swashbuckle)。我在这里将其称为“ my_api”。

我正在使用Windows 7上的Visual Studio 2017进行开发。

此Web应用程序在开发时(当然)在我的本地主机上运行良好。

http://localhost:5000/swagger

此URL将打开招摇的用户界面。

http://localhost:5000/api/[endpoints]

这些URL端点将从数据库中检索各种资源。


我想实现的目标(不确定是否可行):

我想将此Web应用程序部署到运行IIS 8的Windows Server 2012,该Windows 8已经运行了另外三个相对静态的网站。

我想在此服务器上“ wwwroot”中的文件夹(“ my_api_folder”)中部署构建。然后:

http://www.server-domain.com/my_api_folder/swagger

将打开招摇的用户界面。

http://www.server-domain.com/my_api_folder/api/[endpoints]

将调用我的各种API端点。


我做了什么:

我使用VS 2017将Web应用构建(发布)到文件夹。

我将其构建为自包含部署(SCD),希望这将更易于部署。

我正在使用的构建目标(RID)是win-x64。

构建过程完成后,在生成的.Net Core文件夹中,我有一个可执行文件(“ my_api.exe”),多个dll和其他资产/配置文件。

我可以在本地计算机上双击运行此可执行文件。它将在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。 (在服务器的IE浏览器上找不到404。)

我也无法从服务器外部访问这些路由。但是这次它挂了很长时间,最终显示网关没有响应。

但是

netstat -a -o -n

显示“ my_api.exe”的确在我手动运行可执行文件后正在监听端口5000。


我的描述可能无处不在。我感觉自己缺少一些关键知识,无法在这里进行这项工作。

请告知我该如何调试?

可能是什么原因?

如果您需要任何其他信息,也请告诉我。

谢谢。

我已经使用ASP.NET Core 2.2开发了一个简单的Web API,该API具有Swagger UI(通过Swashbuckle)。我在这里将其称为“ my_api”。我正在Windows 7上使用Visual Studio 2017进行开发。此网络应用程序...

asp.net-core deployment swagger iis-8 windows-server-2012
1个回答
0
投票

我认为可以遵循此文档并适应其自身情况:https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/iis/?view=aspnetcore-3.1

© www.soinside.com 2019 - 2024. All rights reserved.