在会话结束后,用C#代码隐藏弹出一个简单的JavaScript警报

在会话结束后,用C#代码隐藏弹出一个简单的JavaScript警报,javascript,c#,redirect,code-behind,sessionend,Javascript,C#,Redirect,Code Behind,Sessionend,我试图做的是,我在Global.asax.cs文件中使用了一个函数来检测用户的登录会话何时过期,如果过期,则应将用户重定向到登录页面,代码如下所示: protected void Session_Start(object sender, EventArgs e) { if (Context.Session != null) { if (Session.IsNewSession) {

我试图做的是,我在Global.asax.cs文件中使用了一个函数来检测用户的登录会话何时过期,如果过期,则应将用户重定向到登录页面,代码如下所示:

protected void Session_Start(object sender, EventArgs e)
    {
        if (Context.Session != null)
        {
            if (Session.IsNewSession)
            {
                HttpCookie newSessionIdCookie = Request.Cookies["ASP.NET_SessionId"];
                if (newSessionIdCookie != null)
                {
                    string newSessionIdCookieValue = newSessionIdCookie.Value;
                    if (newSessionIdCookieValue != string.Empty)
                    {
                       //I want to let the client side page to pop-up an alert to indicate the user 
                       //that the session is expired.

                        Response.Write("<script>alert('Your Session is out, please re-login!');</script>");

                        // This means Session was timed Out and New Session was started
                        Response.Redirect("Login.aspx");
                    }
                }
            }
        }
    }
受保护的无效会话\u启动(对象发送方,事件参数e)
{
if(Context.Session!=null)
{
if(Session.IsNewSession)
{
HttpCookie newSessionIdCookie=Request.Cookies[“ASP.NET_SessionId”];
if(newSessionIdCookie!=null)
{
字符串newSessionIdCookieValue=newSessionIdCookie.Value;
if(newSessionIdCookieValue!=string.Empty)
{
//我想让客户端页面弹出一个警报来指示用户
//会话已过期。
回复。写(“警报('您的会话已结束,请重新登录!');”;
//这意味着会话已超时,新会话已启动
重定向(“Login.aspx”);
}
}
}
}
}
但是,我当前代码的问题是,当会话过期时,页面将直接重定向,根本没有弹出警报


有人能帮忙吗?提前谢谢

您不了解HTTP是如何工作的。重定向命令告诉浏览器忽略当前请求响应中的任何内容,改为转到一个全新的URL。您的Javascript返回到浏览器,但它忽略了它——因为您告诉它使用重定向命令——并直接进入登录页面。我个人认为,从用户体验的角度来看,这很好,大多数用户将习惯于网站偶尔会要求他们再次登录。所以我不确定你是否真的需要这个消息。@ADyson先生,谢谢你的快速回复。是的,我知道这是一个丑陋的举动与JS。是否可以先重定向用户重新登录,然后在登录页面上弹出警报/确认?您可以-您必须在登录页面URL中输入一些querystring参数,告诉它访问是由于会话过期,以便它知道显示警报。或者您可以删除响应。重定向到此处,并将
window.location=“Login.aspx”导入JS,这样它就可以在客户端导航到登录页面。(但您还需要在C#中确保响应在此之后结束,以便不会意外显示其他数据)。但是,是的,这是一个丑陋的解决方案,而且可能没有必要。JS警报具有侵入性,并且有点复古。@ADyson感谢您的建议和时间,非常感谢!