Http Redirect 302 - PullRequest
       6

Http Redirect 302

8 голосов
/ 29 августа 2011

Я пытаюсь сделать HTTP 302 Redirect, но получаю следующее исключение, когда я работаю в режиме отладки.

Unable to evaluate expression because the code is optimized or a native frame is on top of the call stack

var response = HttpContext.Current.Response; 
response.Clear(); 
response.Status = "302 Found";
response.AddHeader("Location", "http://google.com"); 
response.End();
response.Flush();

Короче говоря, этот вызов не сбрасывает ответ и не перенаправляет.

Как мне заставить это работать?

Ответы [ 2 ]

9 голосов
/ 29 августа 2011

Вы не должны так звонить End и Flush - для перенаправления с HTTP 302 вы должны использовать HttpContext.Current.Response.Redirect см. http://msdn.microsoft.com/en-us/library/a8wa7sdt.aspx

5 голосов
/ 29 августа 2011

Объект HttpResponse имеет метод для выполнения перенаправления 302.

Response.Redirect("page.aspx") 

Хотя ваш код должен работать нормально, так как это распространенный способ реализации 301 redirect.

Обратите внимание, что response.Flush() является избыточным, поскольку буфер ответа сбрасывается на клиент, и выполнение заканчивается на response.End(), поэтому строка не будет выполнена.

Поиск в Google других пользователей с подобными проблемами указывает на эту статью базы знаний http://support.microsoft.com/kb/312629/EN-US/, которая, вероятно, является причиной ваших проблем.

...