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