【问题标题】:NET Core 2 default 'Web Application" fails on remote IIS under win7NET Core 2 默认的“Web 应用程序”在 win7 下的远程 IIS 上失败
【发布时间】:2018-03-29 21:24:44
【问题描述】:

构建了一个默认的 Net Core 2 应用程序,没有授权,并通过 VS2017 成功地通过 Web 部署在 Win 7 下发布到远程 IIS 实例。但是,该应用程序无法运行,产生 HTTP 500 错误。

日志文件显示 500.19 错误:

字段:日期时间 s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) sc-status sc-substatus sc-win32-status 耗时 2018-03-29 20:42:20 ::1 GET / - 81 - ::1 Mozilla/5.0+(Windows+NT+6.1;+WOW64;+Trident/7.0;+rv:11.0)+like+Gecko 500 19 5 296

经过研究,似乎有无数的选项可以设置为在 IIS 下运行。我首先尝试了MSrecommendations,导致出现上述错误。

这里是 web.config:

 <?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <handlers>
      <add name="aspNetCore" 
           path="*" verb="*" 
           modules="AspNetCoreModule" 
           resourceType="Unspecified" />
    </handlers>
    <aspNetCore processPath="dotnet" 
                arguments=".\WebApplication1.dll" 
                stdoutLogEnabled="true" 
                stdoutLogFile=".\logs\stdout" />
  </system.webServer>
</configuration>

这是 IIS 站点配置:

IIS 插件:

  1. MS Web 平台安装程序

  2. Net Core 服务器托管

  3. 网络部署

  4. MS .NET Core 2.0.6 Windows 服务器托管

问题:

  1. 默认应用在发布到 IIS 时是否应该按原样工作?
  2. 如果没有,需要什么?

【问题讨论】:

  • 当你检查事件日志时(Event Viewer)有什么有趣的地方吗?
  • 您是否安装了 .NET Core Server Hosting Bundle?它不适用于 OOB IIS
  • 是的,捆绑包已安装。请参阅上文以查看已安装的软件包。
  • 实际的 500.19 页面会说明原因。想尽一切办法找到它。

标签: c# iis asp.net-core


【解决方案1】:

解决方案是向包含 Net Core 应用程序的文件夹添加 IIS 应用程序池访问权限,如 Microsoft 文档中的 here 所示。

所以,是的,默认的 ASP.NET Core 2 应用程序可以在 IIS 下正常运行。问题根本与应用程序无关。

由于对 Web 开发和 IIS 的无知,这个问题花费了我将近三天的时间,我会发布这个答案以防其他人遇到同样的问题。

感谢 Simonare 让我走上了正确的道路,尽管是间接的。

【讨论】:

    【解决方案2】:

    这没有显示足够的错误信息。

    首先我建议你在 web.config 下启用 stdoutLog。并且通过包含在 program.cs 下启用详细的错误日志也很有意义 UseSetting("detailedErrors", "true") CaptureStartupErrors(true)

    var host =  WebHost.CreateDefaultBuilder(args)
            .UseSetting("detailedErrors", "true")
            .CaptureStartupErrors(true)
            .UseKestrel()
            .UseStartup<Startup>()
            .Build();
    

    此外,您可以通过在部署目录上打开命令提示符并通过执行 `dotnet yourApplicatonName.dll 运行应用程序来尝试在服务器上运行 dotnetcore 应用程序

    更多故障排除信息可以在下面找到

    https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/iis/troubleshoot

    编辑:当您发布应用程序时,有时需要通过定位远程操作系统版本来发布您的应用程序。为此,您需要在 project.csproj 中包含 RuntimeIdenfiers

    <RuntimeIdentifiers>win10-x64;win7-x64</RuntimeIdentifiers>
    

    运行时标识符的目录可以在 https://docs.microsoft.com/en-us/dotnet/core/rid-catalog

    那么您需要更新您的发布配置文件以正确定位远程平台。默认情况下,它是“便携式”

    【讨论】:

    • 感谢您的帮助。应该期望默认生成的 Web 应用程序在 IIS 下运行还是需要更改?
    • 你不需要改变但是你需要在microsoft.com/net/download/Windows/run下安装.NET Core Runtime包(2个包)
    • .NET Core 2.0.6 运行时和 Windows Server Hosting 均已安装。还需要吗?
    • 没有。请按照我提到的故障排除程序进行操作。
    • 谢谢,西蒙娜。原来是文件夹权限问题,与应用本身无关。
    猜你喜欢
    • 2017-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-10
    • 2019-04-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多