我已经使用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进行开发。此网络应用程序...