在win7下,远程IIS上的NET Core 2默认“Web应用程序”失败

时间:2018-03-29 21:24:44

标签: c# iis asp.net-core

构建默认的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 +(视窗NT + + 6.1 + WOW64; +三叉戟/ 7.0; + RV:11.0)+等+壁虎   500 19 5 296

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

这是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站点配置:

enter image description here

IIS加载项:

  1. MS Web平台安装程序

  2. Net Core服务器托管

  3. Web部署

  4. MS .NET Core 2.0.6 Windows Server Hosting

  5. 问题:

    1. 默认应用程序应该按原样发布到IIS吗?
    2. 如果没有,有什么必要?

2 个答案:

答案 0 :(得分:2)

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

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

由于这个问题花费了我差不多三天的时间,因为我不了解网络开发和IIS,我会发布这个答案以防其他人遇到同样的问题。

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

答案 1 :(得分:1)

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

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

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

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

可以在下面找到进一步的故障排除信息

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

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