使用 Swagger UI 将 ASP.NET Core Web API 部署到托管其他几个网站的 Windows Server 2012 (IIS 8)
Deploy a ASP.NET Core Web API with Swagger UI to Windows Server 2012 (IIS 8) that hosts several other websites
我用 ASP.NET Core 2.2 开发了一个简单的 Web API,它有一个 Swagger UI(通过 Swashbuckle)。我在这里称它为 "my_api"。
我在 Windows 7 上使用 Visual Studio 2017 进行开发。
这个网络应用程序在我的本地主机上运行良好(当然)。
http://localhost:5000/swagger
这个URL会开招摇UI.
http://localhost:5000/api/[endpoints]
这些 URL 端点将从数据库中检索各种资源。
我想达到的效果(不知道可不可以):
我想将这个网络应用程序部署到 Windows Server 2012 运行ning IIS 8,它已经有其他三个相对静态的网站 运行ning。
我想将构建部署到此服务器上 "wwwroot" 中的文件夹 ("my_api_folder") 中。那么:
http://www.server-domain.com/my_api_folder/swagger
会开招摇UI.
http://www.server-domain.com/my_api_folder/api/[endpoints]
将调用我的各种 API 端点。
我做了什么:
我使用 VS 2017 构建(发布)Web 应用程序到一个文件夹。
我将其构建为自包含部署 (SCD),希望它更易于部署。
我使用的构建目标 (RID) 是 win-x64。
构建过程完成后,我在 .Net Core 生成的 "publish" 文件夹中有一个可执行文件 ("my_api.exe")、几个 dll 和其他 assets/config 文件。
我可以 运行 在我的本地机器上双击这个可执行文件。它会监听 localhost:5000 并且一切正常。
然后我将所有构建文件部署(复制并粘贴)到服务器上的 "my_api_folder" 文件夹中。
我现在面临的问题:
部署后,两者
http://www.server-domain.com/my_api_folder/swagger
和
http://www.server-domain.com/my_api_folder/api/[endpoints]
将 return 500 内部服务器错误。
然后我尝试双击服务器上的可执行文件,它会 运行。 (它显示在 localhost:5000 上收听)。
但是,我无法在服务器上打开 http://localhost:5000/swagger (or 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,它有一个 Swagger UI(通过 Swashbuckle)。我在这里称它为 "my_api"。
我在 Windows 7 上使用 Visual Studio 2017 进行开发。
这个网络应用程序在我的本地主机上运行良好(当然)。
http://localhost:5000/swagger
这个URL会开招摇UI.
http://localhost:5000/api/[endpoints]
这些 URL 端点将从数据库中检索各种资源。
我想达到的效果(不知道可不可以):
我想将这个网络应用程序部署到 Windows Server 2012 运行ning IIS 8,它已经有其他三个相对静态的网站 运行ning。
我想将构建部署到此服务器上 "wwwroot" 中的文件夹 ("my_api_folder") 中。那么:
http://www.server-domain.com/my_api_folder/swagger
会开招摇UI.
http://www.server-domain.com/my_api_folder/api/[endpoints]
将调用我的各种 API 端点。
我做了什么:
我使用 VS 2017 构建(发布)Web 应用程序到一个文件夹。
我将其构建为自包含部署 (SCD),希望它更易于部署。
我使用的构建目标 (RID) 是 win-x64。
构建过程完成后,我在 .Net Core 生成的 "publish" 文件夹中有一个可执行文件 ("my_api.exe")、几个 dll 和其他 assets/config 文件。
我可以 运行 在我的本地机器上双击这个可执行文件。它会监听 localhost:5000 并且一切正常。
然后我将所有构建文件部署(复制并粘贴)到服务器上的 "my_api_folder" 文件夹中。
我现在面临的问题:
部署后,两者
http://www.server-domain.com/my_api_folder/swagger
和
http://www.server-domain.com/my_api_folder/api/[endpoints]
将 return 500 内部服务器错误。
然后我尝试双击服务器上的可执行文件,它会 运行。 (它显示在 localhost:5000 上收听)。
但是,我无法在服务器上打开 http://localhost:5000/swagger (or http://127.0.0.1:5000/swagger),也无法调用 API。 (在服务器的 IE 浏览器上找不到 404。)
我也无法从服务器外部访问这些路由。但是这次挂了很久,最后显示网关没有响应。
但是
netstat -a -o -n
显示 "my_api.exe" 确实在监听端口 5000,在我 运行 手动执行可执行文件后。
我的描述可能无处不在。我觉得我缺少一些关键知识来使这项工作在这里进行。
请指教我应该如何调试它?
可能是什么原因?
如果您需要任何其他信息,也请告诉我。
谢谢。