IIS中的ASP.NET Core + Framework获取HTTP 404

问题描述 投票:0回答:1

好的 - 这是我第一次部署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。其他一些观点:

  • 我将应用程序发布到本地文件夹并将其复制到服务器而不做任何更改。
  • 我在默认网站上创建了新应用程序,并为其提供了自己的应用程序池 - 设置为“无托管代码”
  • out-of-proc是默认值,所以我没有为此做任何特殊配置。
  • 我已确认AspNetCoreModuleV2出现在模块列表中。

结果

我点击的每个页面都有HTTP404。我在服务器上本地运行IE并使用如下网址:http://localhost/MyApp/Home/MyView

  • 应用程序池显示正在运行1个应用程序。
  • 应用程序事件日志显示如下消息:应用程序'/ LM / W3SVC / 2 / ROOT / MyApp'已成功启动进程'8864',进程'8864'正在侦听端口'37706'。它没有显示任何错误。
  • 我尝试将default.htm文件添加到应用程序的根目录并直接加载静态页面(使用http://localhost/MyApp/default.htm)。这给了404.如果我删除web.config,这个页面将加载。

我真的不希望部署应用程序这么复杂。

任何人都可以提供有关如何解决或解决此问题的任何指导吗?

更新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-->
c# .net asp.net-core
1个回答
0
投票

解决了!我正在使用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变量。

再次感谢您的建议......

© www.soinside.com 2019 - 2024. All rights reserved.