Я тестирую сайт IIS 7.5 с управляемым конвейерным режимом = 'Integrated'
Мой сайт предназначен для мобильных устройств и использует правильно сформированные URL-адреса для передачи параметров с минимальным набором текста. Например, «mysite.com/bob1234» в данном случае «bob1234» фактически является параметром.
В Application.BeginRequest я обрабатываю Request.Url.AbsolutePath, используя регулярное выражение, чтобы определить, правильно ли сформирован URL.
Я хотел добавить страницу Custom 404, если пользователь неправильно набирает URL, т.е. mysite.com/boob1234.
<system.web>
<customErrors mode="RemoteOnly" defaultRedirect="~/MobileError.aspx">
<error statusCode="404" redirect="404.htm"/>
</customErrors>
</system.web>
И хотя это ловит ошибки, когда расширение равно «.aspx», оно не ловит 404 (s), когда не сопоставлен ни один обработчик, например, «/mysite.com/boob1234'.
».
Я следовал инструкциям и также добавил элемент в мой system.webserver
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" />
<httpErrors defaultResponseMode="Redirect" errorMode="DetailedLocalOnly">
<remove statusCode="404" subStatusCode="-1"/>
<error statusCode="404" prefixLanguageFilePath=""
path="/mobile/MobileError.aspx" responseMode="ExecuteURL"/>
</httpErrors>
</system.webServer>
Но никакая итерация этого, похоже, не работает. Когда я раскомментирую блок, я получаю ошибку 500. И нет, похоже, с моим кодом проблем нет. Я получаю ошибку 500, даже когда просто пересылаю простую страницу HTML.
Я реализовал неудачную трассировку запросов, чтобы увидеть, что я мог видеть.
Я получаю ожидаемое: 404, брошенных IIS Web Core.
Затем, через несколько шагов, запускается CustomerErrorModule, но он завершается с ошибкой 500. Подробное сообщение
ConfigExceptionInfo:
\? \ C: ..... \ MyApp \ web.config (89)
: Этот раздел конфигурации не может быть
используется на этом пути. Это происходит когда
раздел заблокирован у родителя
уровень. Блокировка либо по умолчанию
(overrideModeDefault = "Deny") или установите
явно с помощью тега местоположения с
overrideMode = "Запретить" или наследие
AllowOverride = "ложь".
Я попытался пройти по стеку .config и не нашел ссылок на overrideMode = "Deny"
Любая помощь будет потрясающей. Полностью застрял сейчас.
спасибо:
Дилан