C# HttpContext.Current.User.Identity.IsAuthenticated返回false

C# HttpContext.Current.User.Identity.IsAuthenticated返回false,c#,asp.net,authentication,C#,Asp.net,Authentication,我有一个奇怪的问题 我有一个带有以下代码的页面 if (!HttpContext.Current.User.Identity.IsAuthenticated) { Server.Transfer(@"~/Views/Public/Unauthorised.aspx"); return; } 出于某种原因,对于一个用户(我们已经将其缩小到他的单机和windows登录配置文件),IsAuthenticated总是返回false。即使他已登录到该网站,

我有一个奇怪的问题

我有一个带有以下代码的页面

if (!HttpContext.Current.User.Identity.IsAuthenticated)
    {
        Server.Transfer(@"~/Views/Public/Unauthorised.aspx");
        return;
    }
出于某种原因,对于一个用户(我们已经将其缩小到他的单机和windows登录配置文件),
IsAuthenticated
总是返回false。即使他已登录到该网站,并且可以导航到需要经过身份验证的用户的其他页面。除了这一页


我们检查了机器是否接受了所有cookie,但仍然收到相同的问题。我不知道从这里到哪里去。。。有什么建议吗?

至少有两种已知的情况会导致这种行为

第一种情况当您在
web.config
上的身份验证会话上设置了
requireSSL=“true”
,并从非安全页面调用该函数时。因此,如果使用
requireSSL=“true”

第二种情况当您没有在web.config内的身份验证会话上再次设置
domain=“site.com”
时,您尝试一次从
www.yoursitename.com
请求cookie,另一次从
yoursitename.com
请求cookie。在这种情况下,身份验证cookie不同,它将失败。因此,在web.config上设置该参数和其他参数

<authentication mode="Forms">
  <forms domain="yoursitename.com"  />
</authentication>


是,允许使用所有cookie。这是我的第一个想法…域名和你登录的页面上的域名一样吗?所有页面都在同一个域上。在同一个web应用程序中,同一个会话。窗体还是Win auth?如果您在该计算机上使用不同的登录,会发生什么情况?您需要确定它是帐户、计算机还是浏览器。您可以在其他计算机上使用登录吗?您可以在同一台机器上使用不同的浏览器吗。我看到他做了一些疯狂的事情,非常感谢亚里士多德。这该死的东西快把我逼疯了:)干杯!
<authentication mode="Forms">
  <forms domain="yoursitename.com"  />
</authentication>