Я настраиваю 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-адреса с амперсандом?
Отклоненные решения:
- Мне удалось заставить эти изменения реестра работать, но на них было наложено вето из соображений безопасности.
Мне удалось использовать перезапись URL-адресов, чтобы изменить "&" на "и", но это имеет последствия для SEO, поскольку это меняет
и т. Д.
) & (. ))" />
Я видел элемент requestPathInvalidCharacters , web.config, но мы не можем попробовать его, потому что мы все еще на .NET 3.5
Есть ли другие решения, которые я пропустил?