поведение httpErrors с существующим Автоответчиком в web.config - PullRequest
0 голосов
/ 20 сентября 2019

Я ищу подтверждение наблюдаемого, но недокументированного поведения IIS 7.5, так как я не могу найти это поведение документированным на сайте MS.Мне нужен способ проходить только через пользовательские исключения, генерируемые с помощью нового Exception (), у меня customErrors установлен в Off и следующее в web.config

  <httpErrors existingResponse="Auto">
  <clear/>
</httpErrors>

Я не использую TrySkipIisCustomErrors в моем коде вообщено это, кажется, работает по мере необходимости.Системные ошибки по-прежнему ведут себя как "customErrors = 'On'", но мои пользовательские исключения отправляются в мой вызов Ajax, где я анализирую его, чтобы показать сообщение.Это мой тестовый веб-метод:

public string Update(Models.CaseData appData, Models.CaseData appDataCache)
        {

            //Test 1.  trigger system error 
            var t = 0;
            var x = 1;
            var p = x / t;

            var sendEmail = IsModified(appData, appDataCache);

            //Test 2. Throw user defined error
            if (appDataCache != null && !sendEmail)
            {
                throw new Exception("Your changes do not require sending email. Are you sure you want to save these changes?".ToJsonError(type: "confirm"));
            }
        }
  • Тест 1 - это деление на ноль
  • Тест 2 - мое пользовательское исключение.

Если я продолжу тест1 Я получаю общее сообщение «Произошла ошибка при обработке запроса» из IIS, но если я закомментирую его, мое пользовательское исключение из теста 2 перейдет к обработчику ошибок Ajax.

Именно так мне и нужен IIS для работы, но я не уверен, является ли это поведение IIS конструктивным или я сталкиваюсь с какой-то ошибкой IIS, которая работает в мою пользу, своего рода колеблющейся, чтобы доставить ее в производство,

Пожалуйста, посоветуйте или помогите с предложением другого решения, позволяющего обходить только пользовательские исключения.

Спасибо.

...