Как остановить.Net HttpWebRequest. GetResponse () повышение исключения

Конечно, конечно, конечно, существует способ настроить объект.Net HttpWebRequest так, чтобы он не повышал исключение когда HttpWebRequest. GetResponse () называют, и какие-либо 300 или 400 кодов состояния возвращаются?

Jon Skeet не думает так, таким образом, я почти не осмеливаюсь даже спрашивать, но мне трудно полагать, что нет никакого пути вокруг этого. 300 и 400 кодов ответа являются допустимыми ответами при определенных обстоятельствах. Почему мы всегда вынуждались бы подвергнуться издержкам исключения?

Возможно, существует некоторый неясный параметр конфигурации, который уклонился от Jon Skeet? Возможно, существует совершенно другой тип объекта запроса, который может использоваться, который не имеет этого поведения?

(и да, я знаю, что можно просто поймать исключение и получить ответ от этого, но я хотел бы найти способ не иметь к).

Спасибо за любую справку

13
задан Community 23 May 2017 в 12:31
поделиться

1 ответ

Согласно спецификации, когда сервер отправляет код состояния 400, это означает, что:

Запрос не может быть понят сервер из-за неправильного синтаксиса. Клиенту НЕ СЛЕДУЕТ повторять запрос без изменений.

Таким образом, исключение в этом случае выглядит вполне естественным. Что касается 300, то это более спорно.

В любом случае, если вы хотите нестандартного поведения, вы всегда можете прибегнуть к TcpClient , но это действительно кажется крайней и отчаянной мерой.

Вы проводили тесты производительности? Подтвердили ли вы, что создание исключения в этом исключительном случае является узким местом для вашего приложения? В данном случае это похоже на микрооптимизацию. Разве вы не можете сделать этот веб-сервер счастливым, создав действительный запрос и получив в конце 200? Если нет, не можете ли вы переключиться на более стандартный веб-сервер?

5
ответ дан 1 December 2019 в 22:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: