повторный запрос HttpRequest
От: hackersdelight  
Дата: 12.09.11 10:15
Оценка:
постановка задачи:
Есть страница a.aspx, которая обрабатывает входные параметры и возвращает xml. Эта страница кэшируется: при повторном запросе с одними и теми же параметрами возвращает код 304 и данные из кэша.
Нужно написать тест, который проверяет, что при повторном запросе действительно возвращается 304, а не 200.
Проблема в формировании повторного запроса. Есть код:
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(connection);
HttpWebResponse response =(HttpWebResponse)request.GetResponse();
HttpWebRequest resRequest = (HttpWebRequest)HttpWebRequest.Create(connection);
HttpWebResponse resRespomnse = (HttpWebResponse)resRequest.GetResponse();
if (resResponse.StatusCode == HttpStatusCode.NotModified)
return true;
Оба раза приходит 200. Подскажите, почему так происходит и как это поправить.
.net web asp.net nunit
Re: повторный запрос HttpRequest
От: hardcase Пират http://nemerle.org
Дата: 12.09.11 10:21
Оценка:
Здравствуйте, hackersdelight, Вы писали:

H>Оба раза приходит 200. Подскажите, почему так происходит и как это поправить.


Заголовок If-Modified-Since во втором запросе выставляете?
/* иЗвиНите зА неРовнЫй поЧерК */
Re[2]: повторный запрос HttpRequest
От: hackersdelight  
Дата: 12.09.11 10:27
Оценка:
Здравствуйте, hardcase, Вы писали:

H>Здравствуйте, hackersdelight, Вы писали:


H>>Оба раза приходит 200. Подскажите, почему так происходит и как это поправить.


H>Заголовок If-Modified-Since во втором запросе выставляете?


Вообще этот заголовок выставляется в обработчике страницы. А что при таком вызове его нужно выставлять еще раз ручками?

HttpWebResponse response = (HttpWebResponse)HttpWebRequest.Create(connection).GetResponse();
HttpWebRequest resRequest = (HttpWebRequest)HttpWebRequest.Create(connection);
resRequest.IfModifiedSince = response.LastModified;
HttpWebResponse resResponse = (HttpWebResponse)resRequest.GetResponse();

Это, конечно, работает, но я надеялась обойти это как-то по-другому.
Re[3]: повторный запрос HttpRequest
От: hardcase Пират http://nemerle.org
Дата: 12.09.11 10:52
Оценка:
Здравствуйте, hackersdelight, Вы писали:

H>Это, конечно, работает, но я надеялась обойти это как-то по-другому.


Этот заголовок выставляет не веб-сервер, а клиент. Посмотрите как запросы отправляет браузер
/* иЗвиНите зА неРовнЫй поЧерК */
Re: повторный запрос HttpRequest
От: flpavel  
Дата: 12.09.11 10:56
Оценка:
Ответ не по теме:
А вы бы не могли прислать эту самую страницу "a.aspx, которая обрабатывает входные параметры и возвращает xml" — сейчас очень нужно для личного применения...
Заранее, благодарен.
Re[4]: повторный запрос HttpRequest
От: hackersdelight  
Дата: 12.09.11 11:04
Оценка:
H>Этот заголовок выставляет не веб-сервер, а клиент. Посмотрите как запросы отправляет браузер

большое спасибо за подсказку, теперь хоть ясно что да почему.
Re[2]: повторный запрос HttpRequest
От: hardcase Пират http://nemerle.org
Дата: 12.09.11 11:41
Оценка:
Здравствуйте, flpavel, Вы писали:

F>Ответ не по теме:

F>А вы бы не могли прислать эту самую страницу "a.aspx, которая обрабатывает входные параметры и возвращает xml" — сейчас очень нужно для личного применения...

На деле такие вещи лучше делать через отдельный хэндлер (IHttpHandler, ashx файл).
/* иЗвиНите зА неРовнЫй поЧерК */
Re[3]: повторный запрос HttpRequest
От: hackersdelight  
Дата: 12.09.11 13:31
Оценка:
Здравствуйте, hardcase, Вы писали:

H>Здравствуйте, flpavel, Вы писали:


F>>Ответ не по теме:

F>>А вы бы не могли прислать эту самую страницу "a.aspx, которая обрабатывает входные параметры и возвращает xml" — сейчас очень нужно для личного применения...

H>На деле такие вещи лучше делать через отдельный хэндлер (IHttpHandler, ashx файл).


это не страница, а класс, описывающий IHttpHandler и вроде ISessionState (в названии могла ошибиться). Этот класс привязан на обработку запроса a.aspx (это прописывается в web.config). К сожалению страницей поделиться не могу, но могу ответить на любой вопрос с этим связанный.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.