Вообщем нашёл проблему, какой-то нехороший разработчик засунул Global.asax в app_code, а он должен быть в корне. Теперь ошибка отлавливается в Application_Error
Теперь можно указать свою страницу в Web.config для отображения ошибок:
<customErrors mode="On" defaultRedirect="~/ErrorPage.aspx" />
В Global.asax, Application_Error()
, вставить следующий код для получения подробностей ошибки:
// Code that runs when an unhandled error occurs
Exception ex = Server.GetLastError();
Application["TheException"] = ex; //store the error for later
Server.ClearError(); //clear the error so we can continue onwards
Response.Redirect("~/ErrorPage.aspx"); //direct user to error page
И, наконец, в ErrorPage.aspx:
protected void Page_Load(object sender, EventArgs e)
{
// ... do stuff ...
//we caught an exception in our Global.asax, do stuff with it.
Exception caughtException = (Exception)Application["TheException"];
//... do stuff ...
}