.NET Web 表单应用程序不断注销用户
本文关键字:注销 用户 应用程序 Web 表单 NET | 更新日期: 2023-09-27 18:37:21
我有一个 Web 表单应用程序,我测试了它,并且在本地运行良好。当我将其上传到托管我的网站的Web服务器时,它通常只是注销用户(他们被重定向到帐户/登录.aspx页面)。
它不会在应用程序中产生错误,所以我不知道如何正确调试它,但我认为它发生在页面加载事件期间,因为用户有时会(并非总是)在进行一些更改后退出应用程序,但更改保持保存。
我认为由于某种原因,我保留用户登录的会话变量被重置。
如果你有一个想法或指出我一个方向,我可以调查这个问题,我将不胜感激。
这是我在我的网站Master.cs中加载页面时运行的代码,也许它有帮助:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
if (Session["UserId"] == null)
{
Response.Redirect("~/Account/login.aspx");
}
if (!Session["Role"].ToString().Equals("Coach"))
{
if (Session["Role"].ToString().Equals("Administrator"))
Response.Redirect("~/AdminForm/AdminHome.aspx");
if (Session["Role"].ToString().Equals("User"))
Response.Redirect("~/Form/Progress.aspx");
}
}
}
谢谢!
您是否在 web.config 文件中设置了超时?
system.web>
<authentication mode="Forms">
<forms timeout="50000000" slidingExpiration="true"/>
</authentication>
</system.web>
如果您的用户在网站上超过 20 分钟,它将注销。 您可以尝试web.config或IIS设置,这将无济于事。
我发现处理此问题的最佳方法是使用KeepAlive页面和隐藏的iFrame,该页面每18分钟回发一次服务器。这将使工作进程保持运行,并且站点永远不会超时。
我在面向内部的站点上使用过此方法,因为最终用户希望在站点 8 到 5 上而不注销。
此链接中的示例项目