Почему я получаю ошибку HTTP-400 Bad Request с webmatrix cshtml?

Почему, если я отправлю URL-адрес, например:

localhost:38245/TeamWork/Group/1/LONG-COMMENT-POSTED-BY-USER ,

Я получаю сообщение об ошибке «Неверный запрос — неверный URL-адрес, ошибка HTTP 400. URL-адрес запроса недействителен». ?


person Brunodeluk    schedule 23.05.2014    source источник


Ответы (3)


Максимальная длина URL-адреса по умолчанию составляет 4096 в IIS. Вы вполне можете нарушить это с помощью комментария, опубликованного пользователем. Как правило, лучший способ передачи таких данных — это POST, а не URL-адрес. Вы можете обрезать комментарий до более подходящего размера, увеличив значение maxUrl в разделе requestLimits конфигурации IIS: http://msdn.microsoft.com/en-us/library/ms689462%28v=vs.90%29.aspx

person Mike Brind    schedule 24.05.2014

Во-первых, ошибка HTTP 400 предназначена для случаев, когда клиент допустил ошибку. Как вы сами заметили, это ошибка плохого запроса. Это означает, что, возможно, из-за неправильного синтаксиса запрос не может быть выполнен. Как упоминает Майк Бринд, вы, скорее всего, превышаете максимальную длину URL-адреса (в любом случае значение по умолчанию)

Во-вторых, почему вы пытаетесь «отправить» длинный пост по URL-адресу? Вместо этого используйте метод POST. Один из способов сделать это — использовать для этого метод Jquery Post. См. это. Или просто вызвав метод отправки формы через метод OnClick или каким-либо образом пользователь отправляет форму.

POST идеально подходит для передачи больших объемов данных. Таким образом, отправляя данные со стороны клиента, самый простой способ — это использовать POST для их архивирования.

person Force444    schedule 24.05.2014
comment
Моя проблема в том, что я использую запросы XMLHttp, чтобы получить значение (например) текстовой области (где пользователь пишет комментарий) и отправить его в виде ссылки (например, та, которую я показал) в cshtml файл, который вставляет LONG-COMMENT-POSTED-BY-USER в базу данных. Поэтому каждый раз, когда я пишу длинный пост, он показывает мне эту ошибку 400. Должен ли я все еще использовать почту? - person Brunodeluk; 24.05.2014

Как вы сами заявили в части кода вопроса,

localhost:38245/TeamWork/Group/1/LONG-COMMENT-POSTED-BY-USER

Длинный комментарий пользователя должен находиться в пределах, указанных в файле web.config вашего сайта.

Во-вторых, ни один сервер не допустил бы очень длинного URL-адреса, думая, что пользователь может пытаться опубликовать вредоносное ПО. Кроме того, использование коротких URL-адресов полезно для передачи данных, поскольку они потребляют меньше данных.

Из ограничений на запросы легко понять, что URL-адрес должен быть меньше 4096 байт, всего 4 КБ. Как вы думаете, весь этот URL будет 4 КБ?

Поскольку Майк предложил использовать запрос POST для отправки длинных данных, я также предлагаю вам использовать запросы HttpPost для отправки длинных данных такого типа. Таким образом, браузер будет шифровать данные и отправлять их в виде приложения к запросу.

person Afzaal Ahmad Zeeshan    schedule 27.05.2014