【问题标题】:Deploy a ASP.NET Core Web API with Swagger UI to Windows Server 2012 (IIS 8) that hosts several other websites将带有 Swagger UI 的 ASP.NET Core Web API 部署到托管其他几个网站的 Windows Server 2012 (IIS 8)
【发布时间】: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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2020-03-08
      • 2015-03-12
      • 1970-01-01
      • 2018-11-22
      • 2016-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多