Я пытаюсь выполнить перенаправление HTTP 302, но получаю следующее исключение, когда работаю в режиме отладки.
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 ответа
Вы не должны вызывать одновременно End
и Flush
таким образом - для перенаправления с HTTP 302 вы должны использовать HttpContext.Current.Response.Redirect
см. http://msdn.microsoft.com/en-us/library/a8wa7sdt.aspx
У объекта HttpResponse
есть метод для выполнения 302 редиректа.
Response.Redirect("page.aspx")
Хотя ваш код должен работать нормально, поскольку это обычный способ реализации 301 redirect
.
Обратите внимание, что response.Flush()
является избыточным, поскольку буфер ответа сбрасывается для клиента, и выполнение завершится на response.End()
, поэтому эта строка не будет выполняться.
Поиск в Google других пользователей с аналогичными проблемами указывает на эту статью базы знаний http://support.microsoft.com/kb/312629/EN-US/, что, вероятно, быть причиной ваших проблем.
Похожие вопросы
Новые вопросы
c#
C # (произносится как «резкий») - это высокоуровневый, статически типизированный язык программирования с несколькими парадигмами, разработанный Microsoft. Код C # обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, включая, среди прочего, .NET Framework, .NET Core и Xamarin. Используйте этот тег для вопросов о коде, написанном на C # или в формальной спецификации C #.