IIS7 и обработка кода состояния HTTP

У меня сильная головная боль от попытки получить полный программный контроль над отображением ошибки в 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?

8
задан Asbjørn Ulsberg 29 April 2011 в 15:09
поделиться