首页 > 解决方案 > IIS ASP.NET Core 应用程序未启动

问题描述

我创建了一个 ASP.NET Core Web api,它已经在许多 PC 上进行了测试,但是在部署到客户端的 IIS 服务器时,应用程序不会启动或产生任何错误,如应用程序事件日志中所检查的那样。直接运行可执行文件,应用程序运行,您可以浏览到 ASP.NET Core 网站。我导航到 web.config 文件以找到要运行的 dll:

<?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="dotnet" arguments=".\MY_API.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" />
    </system.webServer>
  </location>
</configuration>
<!--ProjectGuid: c1c1b8d5-abcd-479f-9e7a-abcdefghijkl-->

运行dotnet MY_API.dll产生以下结果:

无法启动 Kestrel[0] 尝试以访问权限禁止的方式访问套接字

该端口未绑定到任何其他应用程序,因为当我运行可执行文件时,它成功绑定到该端口,我可以导航到 localhost:port 并显示 api swagger 界面。该dotnet命令成功地在我的开发 PC 上运行该应用程序。

我可以确认 IIS 运行的模块与我在我的开发 PC 上运行的模块相同,并且服务器上安装了与我的开发 PC 上安装的相同的 .net 运行时托管包。我觉得这只是一个权限问题,安全策略可能阻止我使用dotnet命令绑定端口,我已经读过这是 IIS 用来在后台启动应用程序的。

我对服务帐户和 ApplicationPoolIdentities 的了解非常有限。什么是阻止应用程序使用dotnet命令绑定端口的权限,其中运行可执行文件允许我绑定到端口?如何更改这些权限?

标签: c#asp.net-coreiis.net-core

解决方案


推荐阅读