繁体   English   中英

.Net Core 模块未从 IIS 启动,仅从命令行启动

[英].Net Core module not started from IIS, only from command line

I am deployinng a.Net app through IIS running on Windows 10. Web.config is processed properly and IIS does not report any issue with it. 但是 aspnetcore 模块未启动,我无法浏览该站点。 如果我从命令行运行dotnet dllname ,那么我的网站可以正常工作。 这是一个令人沮丧的尝试。 IIS 日志没有提供任何线索说明为什么 IIS 无法像 dotnet 从命令行那样启动站点。 尝试启用 aspnetcore 增强跟踪不会做任何事情。 这是我的 web.config:

<configuration>
 <location path="." inheritInChildApplications="false">
   <system.webServer>
     <handlers>
       <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
     </handlers>
     <aspNetCore processPath="c:\Program Files\dotnet\dotnet.exe" arguments="c:\escompdata2\ESTemplateCompData.dll" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" >
       <handlerSettings>
         <handlerSetting name="debugFile" value=".\logs\aspnetcore-debug.log" />
         <handlerSetting name="debugLevel" value="FILE,TRACE" />
      </handlerSettings>
     </aspNetCore>
   </system.webServer>
 </location>
   <system.webServer>
       <rewrite>
           <rules>
               <rule name="ReverseProxyInboundRule1" stopProcessing="true">
                   <match url="(.*)" />
                   <action type="Rewrite" url="http://escompdata:5000/{R:1}" />
               </rule>
           </rules>
       </rewrite>
   </system.webServer>
</configuration>

我的应用程序池确实具有适当的权限。 我正在使用具有正确凭据的管理员 ID。 这是应用程序池基本设置的屏幕截图在此处输入图像描述

这是高级设置的截图在此处输入图像描述 我正在为我的站点设置反向代理,当从命令行启动 dotnet 应用程序时,IIS 运行良好,这似乎表明该站点至少在 IIS 中设置正确。

问题是 IIS 似乎既不能通过 dotnet 也不能使用应用程序可执行文件启动应用程序。 我没有尝试过使用 Kestrel 服务器的 out 或 process 模式,但这是一个令人费解的部分。 IIS 似乎无法通过日志提供任何线索。 任何帮助将不胜感激。

IIS 需要安装适当的托管包才能托管您的 .Net Core 应用程序。 例如,如果您有一个 .Net Core 3.1 应用程序,则需要安装 .Net Core 3.1 托管包。 IIS 不支持开箱即用地执行.Net Core 应用程序。 这个参考应该让你开始。

使用 IIS 在 Windows 上托管 ASP.NET 内核。

502.3 Bad Gateway 错误的原因有很多。 您需要做的第一件事是确定导致错误的原因。

此链接提供了对 502.3 错误进行故障排除的步骤: 对 ARR 中的 502 错误进行故障排除

我打电话给微软,他们告诉我发生了什么。 我告诉 IIS 代理到 localhost:5000,这是应用程序在命令行中使用 dotnet 命令启动时所听的内容。 但是,当 IIS 启动应用程序时,它不使用该端口。 关键是告诉 IIS 将应用程序绑定到端口 80,这与我告诉它的 5000 不同,并且在 URL 重写部分将操作设置为无。 这让我可以浏览到应用程序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM