在 IIS 上部署 .Net Core WebAPI 项目

Posted

技术标签:

【中文标题】在 IIS 上部署 .Net Core WebAPI 项目【英文标题】:Deploying .Net Core WebAPI project on IIS 【发布时间】:2016-09-26 13:15:56 【问题描述】:

我使用 .Net Core 创建了一个简单的 Web API,并尝试将其发布到 IIS。但是获得 HTTP 500。

我关注了https://docs.asp.net/en/latest/publishing/iis.html 文章,并做了其中提到的任何事情。

我只安装了https://www.microsoft.com/net/download

DotNetCore.1.0.1-WindowsHosting.exe OPT_INSTALL_REDIST=0

注意:我能够成功部署和访问 MVC 应用程序,但无法使用相同的步骤访问 WebAPI 应用程序。

在 IIS 日志中,我看到以下错误。

无法使用命令行“dotnet”.\Project-1.dll' 启动进程,错误代码 = '0x80070002'。

我正在使用 Visual Studio 2015 中提供的默认 Web api 模板

我错过了什么。 WebAPI 部署与 MVC 应用部署 w.r.t .net 核心不同吗?

【问题讨论】:

您能给我们提供更多信息吗?您是只针对 .NET Standard,还是使用特定于平台的代码? Web API 和 MVC 并没有像过去那样在 .NET Core 中分离,因此这不太可能成为症结所在。您的 MVC 应用和 Web API 的应用池是否相同? 我的目标是 .NetCore App 1.0.1。我正在使用带有not managed 设置的相同应用程序池。我正在使用 Visual Studio 提供的基本 WebAPI 模板。我认为你可以复制它。 最后一个问题,那我看看能不能在本地为我实现:如果你检查你的 IIS 日志,有没有相关的细节?这个错误代码有点笼统。 我得到了与我在问题中更新的相同的错误代码。我认为这可能与在 IIS 上安装 .net core 有关。我可以在本地部署它,但不能在服务器上。 好的,这就是我所需要的(如果可行,我们会将其移至答案,以便其他人更容易看到)。首先,检查您的系统(不是用户)PATH 变量以确保安装程序将 dotnet 添加到您的路径中。如果没有,请添加它。无论哪种方式,IIS 在运行时都不会选择它。进入服务并重新启动 Windows Process Activation Service。这将重新启动所有 IIS 位并让它更新路径。 【参考方案1】:

安装 .NET Core Windows Server Hosting 捆绑包时,如果 IIS 当前正在运行,它不会重新启动所有 IIS 进程。这是一件好事,因为在生产服务器上您不希望它们只是重新启动,但如果它更清晰一点会很好。首先,检查您的系统(不是用户)PATH 变量以确保 Dotnet 的路径存在。然后,进入服务并重新启动 Windows Process Activation Service。这将重新启动所有 IIS 位并让它更新路径。完成此操作后,IIS 应该可以很好地为您的 .NET Core 应用程序提供服务。

【讨论】:

以上是关于在 IIS 上部署 .Net Core WebAPI 项目的主要内容,如果未能解决你的问题,请参考以下文章

.NET core 3 API,在 Mac 上使用 Visual Studio Code 开发:如何在 IIS 上部署和配置?

小5聊Asp.Net Core 2.1基础之部署在IIS上接口请求超时解决方法

ABP .Net Core 部署到IIS 问题汇总

将 ASP NET Core 部署到 IIS

ASP .NET Core IIS 部署 IIS AspNetCore 模块错误:CLR 工作线程过早退出

ASP.NET Core api 项目 3.1 在 IIS 上发布