Почему эта переадресация страницы не работает в IE? - PullRequest
3 голосов
/ 10 августа 2010

Я проверяю переменную сеанса на своей странице asp.net и перенаправляю на страницу по умолчанию.

 if (Session["OrgId"] != null)
   {
       // some logic
   }
 else
   {
             Response.Redirect("../Default.aspx?Sid=1", false);
   }

и на моей странице default.aspx я это сделал,

Int64 id = GetId(Request.RawUrl.ToString());
  if (id == 1)
 {
    // I ll show "Session Expired"
 }

public Int64 GetId(string url)
{
    Int64 id = 0;
    if (url.Contains("="))
    {
        if (url.Length > url.Substring(url.LastIndexOf("=")).Length)
        {
            id = Convert.ToInt64(url.Substring(url.LastIndexOf("=") + 1));
        }
    }
    return id;
}

Это работает в googlechrome, firefox, но не в IE. Исключение «Операция прервана».

Ответы [ 3 ]

3 голосов
/ 10 августа 2010

попробуйте изменить

 Response.Redirect("../Default.aspx?Sid=1", false);

на

 Response.Redirect("../Default.aspx?Sid=1"); 

или

Response.Redirect("../Default.aspx?Sid=1", true);
2 голосов
/ 10 августа 2010

Метод HttpResponse.Redirect

Redirect(String, Boolean) Перенаправляет клиента на новый URL. Определяет новый URL и выполнение текущей страницы должно прекратить.

Это означает, что Response.Redirect("../Default.aspx?Sid=1", false); не завершит текущий ответ.

0 голосов
/ 10 августа 2010

IE гораздо более чувствителен, чем другие браузеры, к изменению DOM после отправки заголовков, но до завершения страницы.

Вот ваша проблема:

Response.Redirect("../Default.aspx?Sid=1", false);

Попробуйте изменить false на true.

Кроме того, будьте очень внимательны к регистру имен страниц. «Default.aspx» и «default.aspx» на самом деле не одна и та же страница, даже если Windows позволяет вам сойти с рук.

...