好的 - 这是我第一次部署ASP.NET Core应用程序。要记住的一个问题是,我使用的是ASP.NET Core 2.2,目标是Framework版本4.6.2(不是.Net Core)。在VS2017和IISExpress的本地机器上运行良好。
我在这里完成了MS概述的程序:Host ASP.NET Core on Windows with IIS文档冗长而复杂,但我认为我涵盖了所有内容。它清楚地表明:针对.NET Framework的ASP.NET核心应用程序不支持进程内托管模型。所以,我知道我需要使用Out-of-Proc。其他一些观点:
结果
我点击的每个页面都有HTTP404。我在服务器上本地运行IE并使用如下网址:http://localhost/MyApp/Home/MyView
我真的不希望部署应用程序这么复杂。
任何人都可以提供有关如何解决或解决此问题的任何指导吗?
更新1:Web.config在下面。我尝试过使用和不使用hostModel = ... aspNetCore日志显示成功启动。每次页面访问尝试都没有添加任何内容(看起来很奇怪)
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<!--
Configure your application settings in appsettings.json. Learn more at http://go.microsoft.com/fwlink/?LinkId=786380
-->
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
<remove name="BlockViewHandler" />
<add name="JavaScript" path="*.js" verb="GET,HEAD" type="System.Web.StaticFileHandler" />
<add name="CSS" path="*.css" verb="GET,HEAD" type="System.Web.StaticFileHandler" />
<add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
</handlers>
<aspNetCore processPath=".\My.App.Name.exe" arguments="" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="OutOfProcess">
<environmentVariables />
<handlerSettings>
<handlerSetting name="debugLevel" value="file" />
<handlerSetting name="debugFile" value="d:\Log\MyApp.log" />
</handlerSettings>
</aspNetCore>
</system.webServer>
</configuration>
<!--ProjectGuid: ee76911e-decb-48b7-bd74-36ebfbdb22b6-->
解决了!我正在使用ASPNETCORE_ENVIRONMENT环境变量,但不知道发布过程没有将它放在web.config中。我把它添加到Web.config:
<environmentVariables>
<environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
</environmentVariables>
并且页面现在加载。
我找到的最有用的诊断是在这个链接Troubleshoot ASP.NET Core on IIS那里他们建议我从命令提示符运行My.App.Name.exe。这将创建一个Web进程并将其分配给端口并为您提供所有控制台输出。这让我发现它实际上是半工作的,这让我想到了我错过了Env变量。
再次感谢您的建议......