HttpContext.Current.Response.Redirect正在尝试将用户发送到错误的位置

Skr*_*lin 1 asp.net iis

我有一段代码可以在会话超时时将用户重定向到页面:

void Session_Start(object sender, EventArgs e) 
{
    // Code that runs when a new session is started
    string szCookieHeader = HttpContext.Current.Request.Headers["Cookie"];
    if ((null != szCookieHeader) && (szCookieHeader.IndexOf("ASP.NET_SessionId") >= 0))
    {
        HttpContext.Current.Response.Redirect("SessionTimeout.aspx");
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是IIS无法找到SessionTimeout.aspx,因为它查找错误的地方:

The file '/site/site/site/site/site/site/Site/SessionTimeout.aspx' does not exist.
Run Code Online (Sandbox Code Playgroud)

随着时间的推移,随着越来越多的"/ site /"级别被添加.我可以通过创建一个".../site/site/..."树并在每个树中放置一个SessionTimeout.aspx来解决这个问题,但这显然不是一个真正的解决方案.

有谁知道发生了什么?

tan*_*hos 6

你试过用〜?

HttpContext.Current.Response.Redirect("~/SessionTimeout.aspx");
Run Code Online (Sandbox Code Playgroud)

将在运行时使用您网站的完整网址解决.


Ala*_*son 5

您的重定向是相对于当前页面的.添加〜/到网址,让它看看网站的根目录.

您的重定向应为:

 HttpContext.Current.Response.Redirect("~/SessionTimeout.aspx");
Run Code Online (Sandbox Code Playgroud)