C# ASP.NET登录状态:注销不工作

C# ASP.NET登录状态:注销不工作,c#,asp.net,.net,authentication,membership-provider,C#,Asp.net,.net,Authentication,Membership Provider,我正在使用会员资格提供商开发一个web应用程序,以实现对应用程序部分的身份验证和用户/角色访问 我在母版页中使用LoginStatus控件作为注销链接,但测试发现注销不起作用。如果我尝试再次访问我的应用程序的任何页面(注销后),该页面将显示 我认为这个问题取决于存储在用户会话中的数据,这些数据不会自动清除。是吗 那么,实现注销和清除会话的正确方法是什么呢 注意 我没有为LoginStatus控件实现任何事件。我正在使用表单身份验证。在我的登录页面中,我使用以下代码: FormsAuthentic

我正在使用会员资格提供商开发一个web应用程序,以实现对应用程序部分的身份验证和用户/角色访问


我在母版页中使用
LoginStatus
控件作为注销链接,但测试发现注销不起作用。如果我尝试再次访问我的应用程序的任何页面(注销后),该页面将显示

我认为这个问题取决于存储在用户会话中的数据,这些数据不会自动清除。是吗

那么,实现注销和清除会话的正确方法是什么呢

注意 我没有为
LoginStatus
控件实现任何事件。我正在使用表单身份验证。在我的登录页面中,我使用以下代码:

FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
   1, // Ticket version
   this.txtUser.Text, // Username associated with ticket
   DateTime.Now, // Date/time issued
   DateTime.Now.AddMinutes(30), // Date/time to expire
   true, // "true" for a persistent user cookie
   ruolo, // User-data, in this case the roles
   FormsAuthentication.FormsCookiePath);

string hash = FormsAuthentication.Encrypt(ticket);
HttpCookie cookie = new HttpCookie(
   FormsAuthentication.FormsCookieName,
   hash);

if (ticket.IsPersistent) { cookie.Expires = ticket.Expiration; }

Response.Cookies.Add(cookie);
在myweb.config
system.web
部分:

<authentication mode="Forms">
  <forms name=".ASPXAUTH" loginUrl="login.aspx" protection="All" path="/" domain="keyforup.it"/>
</authentication>
<authorization>
  <deny users="?"/>
</authorization>


LoggedOut
中调用
Session.about()
控件的
LoginStatus
事件解决了这个问题,但我想知道这是否是实现这一点的最佳方法。

我在试图找到这个问题的解决方案时几乎失去了理智。在其他浏览器上一切正常,但firefox和chrome不会在用户登录后将其注销到初始页面

当我在site.master文件中将表单的action属性设置为action=“default.aspx”时,它开始工作

当我在浏览器调试器中查看表单操作时,表单操作具有默认值,但在chrome和firefox上,操作没有设置属性。我认为这可能是.net登录状态控制脚本的问题


由于我的系统现在可以正常工作,我不会进一步搜索,但我希望这将对有类似问题的人有所帮助。

我以前也遇到过类似的问题,我发现问题是由于IIS设置无效,
SessionID不断更改,请确保将
会话ID
打印到页面,以确保其不会更改。“如果我尝试再次访问我的应用程序的任何页面(注销后),页面将显示”-您在web.config中是否有任何内容可防止页面显示给未经身份验证的用户-例如deny users=“?”在web的system.web/authorization部分中。config@Joe对我编辑了我的问题,为什么不直接使用
请求。IsAuthenticated
?@mattytommo,因为这样你就必须为可能出现的每个请求添加该检查。使用authorization元素可以让IIS为您执行此操作。您可以发布您的
注销操作吗?仅仅使用
FormsAuthentication.SignOut
可以说更干净:)@mattytomo不幸的是
FormsAuthentication.SignOut
似乎对我不起作用。。。