如果在 IIS 中作为虚拟目录运行,.net 核心应用程序错误 502.5

Mir*_*hat 5 .net c# windows deployment iis

我在配置 .net 核心应用程序以在 iis 中作为虚拟目录工作时遇到问题。如果我直接用它的端口启动 .net 核心应用程序,它工作正常。

我收到 502.5 响应,在事件查看器中有此消息

Application 'MACHINE/WEBROOT/APPHOST/DEFAULT WEB SITE' with physical root 'C:\inetpub\wwwroot\' failed to start process with commandline ' ', ErrorCode = '0x80070057 : 0.
Run Code Online (Sandbox Code Playgroud)

我已经像这样删除了 .net web.config 中的父处理程序

<handlers>
            <remove name="httpPlatformHandler"/>
            <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
            <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
            <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
        </handlers>
Run Code Online (Sandbox Code Playgroud)

Ric*_*ahl 2

为了运行 ASP.NET Core 应用程序,请确保:

  • 拥有ASP.NET Core Web 托管捆绑包(服务器需要!)
  • 发布您的申请 - 应包括web.config
  • 将发布输出部署到您的服务器
  • 设置应用程序池
  • 将 .NET Framework 设置为 none(可选,但通常是个好主意)
  • 使用对虚拟文件夹具有读取权限的帐户

托管捆绑包包含用于 IIS 的 ASP.NET Core 模块,允许 IIS 启动。如果没有 ASP.NET Core,应用程序将无法在 IIS 上运行。

您还需要发布您的应用程序,这会生成一个最终输出文件夹,其中包含您的二进制文件和配置文件,其中包括web.config根目录中的 和wwwroot包含您的内容的根文件夹。要进行测试,您应该确保可以使用以下命令从命令行运行您的应用程序:

dotnet yourMainAssembly.dll -c Release
Run Code Online (Sandbox Code Playgroud)

如果这不起作用,请首先修复此问题,因为这本质上是 IIS 触发的。一旦独立运行,您可以尝试使用 IIS。

在 Visual Studio 中创建的 ASP.NET Core 项目会自动包含 web.config,其中应包含在 IIS 下运行所需的一切。对于基本设置来说,这应该是您所需要的。生成的 web.config 应该负责让您的应用程序运行。

如果您使用的是虚拟机,则可能会遇到父端配置渗透到虚拟机中的问题,因为虚拟机继承了父级的设置。如果是这种情况,请为您的应用程序池选择相同版本的 .NET Framework,或者与父级共享应用程序池。或者,您可以使用<clear />部分<handlers>来清除层次结构中的所有处理程序。

<configuration>
  <system.webServer>
    <handlers>
      <clear>
      <aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false" startupTimeLimit="3600" requestTimeout="23:00:00">
      <environmentVariables />
    </aspNetCore>
  </system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)

我有一篇博客文章,其中包含有关在 IIS 上托管的更多详细信息以及静态文件的一些附加配置: