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>
我有一个面向框架 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>