【发布时间】:2019-03-21 00:25:51
【问题描述】:
我使用 ASP.NET Core 2.2 开发了一个简单的 Web API,它有一个 Swagger UI(通过 Swashbuckle)。我在这里称它为“my_api”。
我在 Windows 7 上使用 Visual Studio 2017 进行开发。
这个网络应用程序在我的本地主机上运行良好(当然)。
http://localhost:5000/swagger
此 URL 将打开 swagger UI。
http://localhost:5000/api/[endpoints]
这些 URL 端点将从数据库中检索各种资源。
我想要实现的目标(不确定是否可行):
我想将此 Web 应用程序部署到运行 IIS 8 的 Windows Server 2012 上,它已经运行了其他三个相对静态的网站。
我想在此服务器上的“wwwroot”中的文件夹(“my_api_folder”)中部署构建。那么:
http://www.server-domain.com/my_api_folder/swagger
将打开 swagger UI。
http://www.server-domain.com/my_api_folder/api/[endpoints]
将调用我的各种 API 端点。
我做了什么:
我使用 VS 2017 构建(发布)网络应用到一个文件夹。
我将其构建为自包含部署 (SCD),希望这将更易于部署。
我使用的构建目标 (RID) 是 win-x64。
构建过程完成后,我在“publish”文件夹中生成了一个可执行文件(“my_api.exe”)、几个 dll 和其他资产/配置文件。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 内部服务器错误。
然后我尝试双击服务器上的可执行文件,它会运行。 (它显示在 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 deployment swagger iis-8 windows-server-2012