400 неправильных запросов для URL-адресов, содержащих «&» в IIS7 с UrlRoutingModule - PullRequest
2 голосов
/ 23 сентября 2011

Я настраиваю ASP.net MVC 2.0 на старом сайте WebForms, который работает на IIS 7. На старом сайте установлен обработчик 404, например:

<httpErrors errorMode="Custom">
    <remove statusCode="404" subStatusCode="-1" />
    <error statusCode="404" prefixLanguageFilePath="C:\..." path="/error404.aspx" responseMode="ExecuteURL" />
</httpErrors>

Этот обработчик 404 используется для имитации перезаписи URL, поэтому URL-адрес, такой как "/ + yes - & - no", будет перенаправлен на него, а Server.Transfer () переведен на правильную страницу. Это все работает.

При настройке ASP.net MVC 2.0 я добавляю это в web.config:

<modules runAllManagedModulesForAllRequests="false">
    <remove name="UrlRoutingModule" />
    <add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</modules>

После добавления все URL-адреса, содержащие амперсанд (например, "/ + yes - & - no"), возвращают:

Неверный запрос

Как сохранить включенный модуль UrlRoutingModule и разрешить URL-адреса с амперсандом?

Отклоненные решения:

  1. Мне удалось заставить эти изменения реестра работать, но на них было наложено вето из соображений безопасности.
  2. Мне удалось использовать перезапись URL-адресов, чтобы изменить "&" на "и", но это имеет последствия для SEO, поскольку это меняет

    и т. Д. ) & (. ))" />

  3. Я видел элемент requestPathInvalidCharacters , web.config, но мы не можем попробовать его, потому что мы все еще на .NET 3.5

Есть ли другие решения, которые я пропустил?

1 Ответ

0 голосов
/ 26 сентября 2011

Вы прочитали этот пост от Hanselman?

http://www.hanselman.com/blog/ExperimentsInWackinessAllowingPercentsAnglebracketsAndOtherNaughtyThingsInTheASPNETIISRequestURL.aspx

Он описывает, как настроить символы, которые считаются недействительными (ищите requestPathInvalidCharacters в его записи в блоге)

Имейте в виду, что есть несколько наземных мин, о которых следует знать, если вы настроите это.

...