Почему, если я отправлю URL-адрес, например:
localhost:38245/TeamWork/Group/1/LONG-COMMENT-POSTED-BY-USER
,
Я получаю сообщение об ошибке «Неверный запрос — неверный URL-адрес, ошибка HTTP 400. URL-адрес запроса недействителен». ?
Почему, если я отправлю URL-адрес, например:
localhost:38245/TeamWork/Group/1/LONG-COMMENT-POSTED-BY-USER
,
Я получаю сообщение об ошибке «Неверный запрос — неверный URL-адрес, ошибка HTTP 400. URL-адрес запроса недействителен». ?
Максимальная длина URL-адреса по умолчанию составляет 4096 в IIS. Вы вполне можете нарушить это с помощью комментария, опубликованного пользователем. Как правило, лучший способ передачи таких данных — это POST, а не URL-адрес. Вы можете обрезать комментарий до более подходящего размера, увеличив значение maxUrl в разделе requestLimits конфигурации IIS: http://msdn.microsoft.com/en-us/library/ms689462%28v=vs.90%29.aspx
Во-первых, ошибка HTTP 400 предназначена для случаев, когда клиент допустил ошибку. Как вы сами заметили, это ошибка плохого запроса. Это означает, что, возможно, из-за неправильного синтаксиса запрос не может быть выполнен. Как упоминает Майк Бринд, вы, скорее всего, превышаете максимальную длину URL-адреса (в любом случае значение по умолчанию)
Во-вторых, почему вы пытаетесь «отправить» длинный пост по URL-адресу? Вместо этого используйте метод POST. Один из способов сделать это — использовать для этого метод Jquery Post. См. это. Или просто вызвав метод отправки формы через метод OnClick или каким-либо образом пользователь отправляет форму.
POST идеально подходит для передачи больших объемов данных. Таким образом, отправляя данные со стороны клиента, самый простой способ — это использовать POST для их архивирования.
Как вы сами заявили в части кода вопроса,
localhost:38245/TeamWork/Group/1/LONG-COMMENT-POSTED-BY-USER
Длинный комментарий пользователя должен находиться в пределах, указанных в файле web.config
вашего сайта.
Во-вторых, ни один сервер не допустил бы очень длинного URL-адреса, думая, что пользователь может пытаться опубликовать вредоносное ПО. Кроме того, использование коротких URL-адресов полезно для передачи данных, поскольку они потребляют меньше данных.
Из ограничений на запросы легко понять, что URL-адрес должен быть меньше 4096 байт, всего 4 КБ. Как вы думаете, весь этот URL будет 4 КБ?
Поскольку Майк предложил использовать запрос POST для отправки длинных данных, я также предлагаю вам использовать запросы HttpPost для отправки длинных данных такого типа. Таким образом, браузер будет шифровать данные и отправлять их в виде приложения к запросу.