проблема с response.redirect()
От: Tene  
Дата: 03.09.10 13:08
Оценка:
Здрасти всем.
Есть проблемка. Страница авторизации на сайте. Вводятся логин и пароль и после проверки происходит редирект на основную страницу.

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() не подходит
Re: проблема с response.redirect()
От: Neco  
Дата: 03.09.10 16:38
Оценка:
Здравствуйте, Tene, Вы писали:

T>никто не в курсе как победить? HttpContext.Current.Response.ClearHeaders() перед редиректом не помогает, Server.Transfer() не подходит

можно попробовать Response.Clear() и ручками прописать в Response нужный ответ в нужном виде. Если не поможет, то сниффить и смотреть что конкретно он там шлёт.
всю ночь не ем, весь день не сплю — устаю
Re: проблема с response.redirect()
От: TK Лес кывт.рф
Дата: 03.09.10 16:46
Оценка:
Здравствуйте, 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
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re: проблема с response.redirect()
От: Tene  
Дата: 06.09.10 08:22
Оценка:
хм.. насколько я понимаю значение 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);


по идее есть вариант редиректить яваскриптом после записи кук, но вроде как-то криво это
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.