IIS 8 中的 .Net Core 和 Windows 身份验证失败

.Net Core and Windows Authentication in IIS 8 Failing

我有一个面向框架 4.6 的 .Net Core 1.0 Web 应用程序,它使用 Windows 身份验证(内部网站)。它在 IIS Express 下的开发环境中运行良好。

在 startup.cs 我有:

services.Configure<IISOptions>(options => {
            options.ForwardWindowsAuthentication = true;
          });

一旦部署到 Windows Server 2012 中的 IIS 8,然而,应用程序出错了:

var userName = context.User.Identity.Name;

有 "Object reference not set to an instance of an object" 错误。在 web.config 中,我有:

    <system.web>
       <authentication mode="Windows" />
       <authorization>
          <deny users="?" />
       </authorization>
    </system.web>

在站点 "Authentication" 下的 IIS 管理器中,除了 "Windows Authentication" 之外的所有内容都被禁用。在 IIS 中具有相同设置的同一服务器上的另一个 ASP.NET MVC 4 站点工作正常。还有什么我可以尝试让它工作的吗?

下面的配置设置解决了这个问题,特别是 forwardWindowsAuthToken=true:

  <system.webServer>
    <handlers>
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
    </handlers>
    <aspNetCore processPath="<path to app>"  arguments="" stdoutLogEnabled="true" stdoutLogFile="<outpath>" forwardWindowsAuthToken="true" />
        <security>
            <authentication>
                <anonymousAuthentication enabled="false" />
            </authentication>
        </security>
  </system.webServer>