Здрасти всем.
Есть проблемка. Страница авторизации на сайте. Вводятся логин и пароль и после проверки происходит редирект на основную страницу.
HttpContext.Current.Response.Redirect(url, true);
Все вроде нормально, но в некоторых браузерах (в частности при заходе с мобильника NokiaN70-1/5.0737.3.0.1 Series60/2.8 Profile/MIDP-2.0 Configuration/CLDC-1.1)
возникает ошибка
Server cannot set content type after HTTP headers have been sent.
StackTrace: at System.Web.HttpResponse.set_ContentType(String value) at System.Web.UI.Page.SetIntrinsics(HttpContext context, Boolean allowAsync) at System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context) at System.Web.UI.Page.ProcessRequest(HttpContext context) at System.Web.Mvc.ViewPage.ProcessRequest(HttpContext context) at System.Web.Mvc.HttpHandlerUtil.ServerExecuteHttpHandlerWrapper.<>c__DisplayClass4.b__3() at System.Web.Mvc.HttpHandlerUtil.ServerExecuteHttpHandlerWrapper.Wrap[TResult](Func`1 func) at System.Web.HttpServerUtility.ExecuteInternal(IHttpHandler handler, TextWriter writer, Boolean preserveForm, Boolean setPreviousPage, VirtualPath path, VirtualPath filePath, String physPath, Exception error, String queryStringOverride)
никто не в курсе как победить? HttpContext.Current.Response.ClearHeaders() перед редиректом не помогает, Server.Transfer() не подходит
Здравствуйте, Tene, Вы писали:
T>никто не в курсе как победить? HttpContext.Current.Response.ClearHeaders() перед редиректом не помогает, Server.Transfer() не подходит
можно попробовать Response.Clear() и ручками прописать в Response нужный ответ в нужном виде. Если не поможет, то сниффить и смотреть что конкретно он там шлёт.
Здравствуйте, Tene, Вы писали:
T>Все вроде нормально, но в некоторых браузерах (в частности при заходе с мобильника NokiaN70-1/5.0737.3.0.1 Series60/2.8 Profile/MIDP-2.0 Configuration/CLDC-1.1) T>возникает ошибка
T>Server cannot set content type after HTTP headers have been sent.
Проверьте свойство HttpResponse.BufferOutput
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
хм.. насколько я понимаю значение BufferOutput должно быть true?
попробовал явно его задать, посмотрим что получится, спасибо.
Re[2]: проблема с response.redirect()
От:
Аноним
Дата:
07.09.10 14:04
Оценка:
В общем не помогает..
Перед Response.Redirect пишится кука, т.е. как я понимаю при ее записи отправляется заголовок, а при Response.Redirect потом устанавливается ContentType и на этом всё валится, причем только в некоторых мобильных браузерах опятьже.. в обычных браузерах все без проблем..
в общем вот код:
HttpCookieUserSession.TryRemoveCookie();
HttpCookieUserSession.TrySetCookie(UserID, SessionID);
var url = HttpContext.Current.Request["returnurl"];
if (string.IsNullOrEmpty(url)) url = DefaultPage;
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.BufferOutput = true;
HttpContext.Current.Response.Redirect(url, true);
по идее есть вариант редиректить яваскриптом после записи кук, но вроде как-то криво это