У меня сильная головная боль от попытки получить полный программный контроль над отображением ошибки в IIS7 (интегрированный режим). Что Я хочу сделать, выдается ошибка (страница не найдена, внутренняя ошибка сервера, не аутентифицирован и т. Д.), передать весь запрос в пользовательский ASPX или HTML (я предпочитаю последний) с правильным кодом состояния HTTP.
Я хочу, чтобы IIS7 не наплевал на то, что я установил для кода состояния HTTP. Мне не нужна его обработка ошибок. Когда я устанавливаю Response.StatusCode = (int) HttpStatusCode.NotFound
, я хочу, чтобы IIS не отображал свою страницу с ошибкой, а, возможно, передавал запрос в другой файл.
Я получил это статическая конфигурация для работы:
Хотя это работает, это не дает мне программного контроля над тем, что делать с ответом, учитывая сценарий ошибки. Конфигурация - хороший запасной вариант, но я бы очень хотел иметь возможность установить Response.StatusCode
и отобразить что-то совершенно отличное от настроенного 404. html
при определенных обстоятельствах (например, ответ JSON, если мы получим Accept: application / json
), но IIS7 не позволит мне. Никаких шансов.
Так что, черт возьми, я должен делать? Я попытался установить Свойство HttpResponse.TrySkipIisCustomErrors
, но это похоже на серьезную уловку и, похоже, не работает последовательно. Действительно ли установка для этого свойства значения true является рекомендуемой практикой для получения желаемого поведения?
На данный момент у меня осталось только сильное чувство ненависти к IIS7. Может ли кто-нибудь помочь мне исправить это, доказав, что я просто глуп и действительно могу полностью контролировать стек HTTP?