Изменить Uri экземпляра HttpWebRequest? - PullRequest
5 голосов
/ 16 февраля 2011

У меня есть экземпляр HttpWebRequest, который я перехватываю в событии.Я хотел бы изменить URL-адрес до отправки запроса, но я не могу найти способ сделать это.Свойство RequestUri доступно только для чтения.

Я подумал о нескольких способах, но не могу найти работающего решения:Создание нового запроса и клонирование всех свойств.не уверен, как это сделать.

Ответы [ 2 ]

1 голос
/ 30 ноября 2011

Если вы думаете с точки зрения протокола HTTP, каждый запрос не имеет состояния / уникален. Единственный способ связать один запрос с другим - программно через что-то вроде куки, но к самому протоколу HTTP запрос уникален.

Я думаю, что объект HttpWebRequest был разработан с учетом этого. Каждый запрос HttpWebRequest представляет один уникальный вызов URL, и вы создаете параметры для этого вызова. Если вы хотите выполнить другой запрос к другому URL, вы должны создать новый запрос HttpWebRequest и передать ему информацию о состоянии, которую вы используете, а именно: контейнер cookie, информацию заголовка и т. Д.

Длинный многословный ответ на этот вопрос заключается в том, что объект имеет URL-адрес только для чтения, и единственный способ справиться с ним - это:

  1. Используйте небольшой взлом отражения, как вы уже сделали, если вам абсолютно необходимо использовать данный объект HttpWebRequest, который у вас есть.

  2. Создайте новый HttpWebRequest (WebRequest.Create ()) и скопируйте информацию о своем состоянии в новый запрос.

0 голосов
/ 16 февраля 2011

Вы можете использовать RewritePath для этого.

Fe

HttpContext.Current.RewritePath("newurl.aspx");
...