我创建了一个.net核心api(版本2.2.0),尝试在IIS上运行时遇到以下错误。
申请流程无法启动申请流程 已启动但随后已停止应用程序已启动但未能成功 在配置的端口上监听
我验证了我的Web配置,它似乎具有正确的一组值。已启用的日志记录和日志文件为空。
事件日志显示以下错误。
我安装了主机捆绑包,并检查仍然出现相同的错误。还尝试将IIS_IUSRS的权限授予输出文件夹。没什么区别。说了错误代码“'0x80004005'”时,提示权限错误。仍然不知道。感谢任何帮助! 网页配置
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath=".\MyApi.exe" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" hostingModel="InProcess" />
</system.webServer>
</location>
</configuration>`enter code here`
<!--ProjectGuid: 4d7644bb-9348-46f9-8397-95f01e03d599-->
答案 0 :(得分:1)
确保您在iis中正确发布了网站。您的站点根文件夹具有足够的权限,可以通过iis访问它。将iis_iusrs和iusr权限分配给站点文件夹。您的应用程序池标识是设置的应用程序池标识或本地系统。启用匿名身份验证。并且您安装了iis asp.net功能。确保您的站点绑定正确并且应用程序池使用正确的.net版本并在集成的应用程序池下运行。
错误消息背后的原因
HTTP错误502.5-错误的网关和HTTP错误502.5-进程 IIS无法执行时,ASP.NET Core中会出现失败错误消息 dotnet进程。
要解决此问题,您可以采用以下建议的一种方法:
最常见的原因是您尚未在服务器上安装.NET Core运行时。
您可以从Microsoft的.NET download page下载最新的.NET Core运行时。
在安装Bundle之后,请停止iis并重新启动。
发布自包含部署
如果您不想安装.NET Core Runtime。 .NET Core Web应用程序的另一种选择是在自包含部署模式下发布它们,该模式包括所需的.NET Runtime文件以及应用程序。
如果使用此选项,则还需要选择目标运行时:win-x86,win-x64,osx-x64或linux-x64。因为独立的部署无法移植。
发生此错误的另一个原因是当您部署未转换的web.config文件时。
如果您以前使用过Web应用程序,而只是部署了新版本,则可能是您遇到的问题。
在ASP.NET Core应用程序中,web.config文件包含将请求定向到AspNetCoreModule的处理程序和一个aspNetCore元素,该元素定义并配置ASP.NET Core进程以执行Web应用程序。
这是ASP.NET Core应用程序的最小web.config文件:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="true"
stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false"/>
</system.webServer>
</configuration>
问题是未转换的web.config包含变量%LAUNCHER_PATH%和%LAUNCHER_ARGS%,而不是正确的路径。当IIS尝试运行ASP.NET Core时,它将使用%LAUNCHER_PATH%和%LAUNCHER_ARGS%,而不是正确的路径和参数。 要修复ASP.NET Core中的HTTP错误502.5,您需要转换web.config并替换IIS Web服务器上未转换的web.config文件。
转换web.config文件的步骤:
当您选择发布Web应用程序时,将进行此转换。转换后的web.config最终位于发布的输出文件夹中。因此,您只需要发布Web应用程序并将生成的web.config文件复制到服务器上即可。
在转换后的web.config文件中,aspNetCore元素将如下所示:
<aspNetCore processPath="dotnet" arguments=".\MyApplication.dll" stdoutLogEnabled="true"
stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false" />
%LAUNCHER_PATH%已被dotnet替换,%LAUNCHER_ARGS%已被主Web应用程序dll。\ MyApplication.dll的路径替换。
链接: