【发布时间】:2015-03-11 21:31:39
【问题描述】:
我有一个 Web 表单应用程序,我在本地测试并运行良好。 当我将它上传到托管我的网站的网络服务器时,它通常只是注销用户(他们被重定向到 Account/Login.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 文件和/或托管它的服务器的 IIS 配置。
-
不要使用 Session 进行身份验证...。这是非常不安全的,并且您会遇到此类问题,因为 IIS 可以随时回收您的工作进程(丢失您的会话)。您应该改为使用 FormsAuthentication 令牌,并使用基于角色的访问权限来控制授权
-
埃里克,谢谢你的回答。我将身份验证从 Session 更改为 cookie,但有时仍会中断。它不会将我重定向到登录屏幕,而是将我重定向到具有 cookie 的角色的主页。例如,管理员主页是“AdminHome”。我单击“AddUser”页面,有时会被重定向到“AdminHome”,但并非总是如此。您知道是什么原因造成的吗?
标签: c# asp.net session session-timeout