Проблема заключается в том, что эти конкретные ошибки происходят до того, как ASP.NET может загрузить данные, и ваша страница «500 внутренняя ошибка сервера» является страницей .aspx, для загрузки которой требуется ASP.NET.
Самым простым вариантом было бы сделать вашу страницу 500 HTML-страницей, но это означало бы, что вы не можете делать простую регистрацию ошибок и т. Д. Оттуда.
Это может все еще не помочь сценарию web.config, так как если IIS не может обработать web.config, нет гарантии, что он прочитает ваш раздел об ошибке.
Другим вариантом было бы указать IIS обслуживать статическую HTML-страницу на 500 ошибок.
Наконец, вы можете попробовать отловить ошибки в событии Application_Error в файле web.config - это по крайней мере позволит вам обработать ошибку, даже если страница, которую вы пытаетесь отобразить, не может загрузиться.
Изменить, чтобы добавить
Если вы работаете с IIS 7 в интегрированном режиме, вам нужно сделать еще одну вещь, если вы устанавливаете код ответа на странице ошибок на 500:
Response.TrySkipIisCustomErrors = true;
Однако обратите внимание, что следующие условия не позволят отображать любую пользовательскую страницу ошибки 500, что приведет к YSOD:
- Ошибки в web.config или определенных обработчиках в web.config, которые запускаются до остальной части конвейера (т. Е. Основная часть исходного ответа)
- Ошибки на странице ошибок.