Ошибка неверного запроса 400 на IIS7 .NET 3.5 - PullRequest
0 голосов
/ 23 августа 2010

Я сталкиваюсь с ошибкой 400 неверного запроса на IIS7.Я закодировал специальные символы в строке URL.Мой URL выглядит примерно так (не нравится% 26):

http://www.myjobs.com/a/q-Barnes+%26+Noble

Это было бы легко исправить, если бы я работал на .NET 4.0, но я в облаке RackSpace и могу работать только наIIS7 .NET 3.5.

Это то, что я использовал бы в своем файле web.config, если бы я работал на IIS7 .NET 4.0:

requestPathInvalidCharacters=""

Какие еще варианты доступны при работе на IIS7.NET 3.5?

Ответы [ 2 ]

0 голосов
/ 23 августа 2010

Зачем вообще кодировать специальные символы в URL?

Почему бы не преобразовать их все в более удобную для SEO форму, содержащую только буквенно-цифровые символы и тире, и сохранить эту специальную форму в вашей базе данных. Или, что еще проще, включите идентификатор в URL-адрес и используйте последнюю часть, чтобы сделать его читабельным и удобным для SEO:

например. www.myjobs.com/a/1234/q-Barnes-and-noble

Этот подход также означает, что вы можете позже изменить свою кодировку (возможно, добавить какой-то новый специальный символ в альфа-отображение) и не иметь 404.

0 голосов
/ 23 августа 2010

Единственный способ, которым вы можете делать такие запросы, - это изменить реестр. Для IIS, работающего в 32-битном режиме, добавьте следующий ключ DWORD и установите его значение равным 1 HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ ASP.NET \ VerificationCompatibility

Если вы используете IIS в 64-битном режиме, добавьте следующий ключ DWORD и установите его значение равным 1 HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ ASP.NET \ VerificationCompatibility

Не уверен, что ваша хостинговая среда предоставит вам доступ к этому материалу. Я протестировал его на IIS 7.5 и смог сделать запрос к /Barnes&Noble/default.aspx, используя URL-адрес, закодированный следующим образом: Response.Redirect (Server.UrlEncode ("Barnes & Noble") + "/default.aspx");

...