我在 IIS6 / Server 2003 上运行一个网站,它在本地 Intranet 上使用集成 Windows 身份验证。我可以浏览到该站点,但在调用以下 C# 代码时会出现间歇性的“Object null”错误,该代码在每个请求上都会调用:
....
GetUserIdFromPrincipal(User)
....
public static string GetUserIdFromPrincipal(IPrincipal principal) {
return principal.Identity is WindowsIdentity ? (principal.Identity as WindowsIdentity).User.Value : principal.Identity.Name;
}
因此,由于错误很明显是间歇性的,Windows Auth 在某种程度上正在工作,但是在网站上导航几次点击后,我得到空引用错误,这意味着 IPrincipal 为空(我认为这在 ASP.NET 中永远不应该为空)。
该错误仅发生在新建的 VM 上。该代码在其他机器上很好,当然在本地开发时也是如此。
IIS 是否请求每个请求的 Windows 身份验证详细信息?什么会导致这种间歇性问题?任何帮助或建议将不胜感激。