Я потратил много времени, пытаясь найти обходной путь для этого, но безрезультатно, поэтому я решил посмотреть, есть ли у кого-нибудь идея.
Я использую Elmah в своем приложении ASP.NET MVC3.Я использую тот же код из принятого ответа в предыдущей ссылке.
У меня также есть этот код в моем Global.asax для отображения страниц ошибок с правильным ответом HTTP:
///
/// The customErrors functionality provided by ASP.NET results in HTTP 302 redirects occurring which doesn't accurately reflect what the real HTTP code of the response was.
/// This method can be used to handle specific HTTP codes without an intermediate redirect.
///
protected void Application_Error() {
var exception = Server.GetLastError();
var httpException = exception as HttpException;
Response.Clear();
Server.ClearError();
var routeData = new RouteData();
routeData.Values["controller"] = "Error";
routeData.Values["action"] = "Error500";
Response.StatusCode = 500;
if (httpException != null) {
Response.StatusCode = httpException.GetHttpCode();
Response.TrySkipIisCustomErrors = true;
switch (Response.StatusCode) {
case 403:
routeData.Values["action"] = "Error403";
break;
case 404:
routeData.Values["action"] = "Error404";
routeData.Values["message"] = httpException.Message;
break;
case 500:
routeData.Values["action"] = "Error500";
break;
}
}
IController errorsController = new ErrorController();
var rc = new RequestContext(new HttpContextWrapper(Context), routeData);
errorsController.Execute(rc);
}
Проблема возникает, когда я не нахожусь на своей (локальной) машине разработки (из-за чего я изначально думал, что это пользовательские ошибки . Когда возникает исключение, Elmah обрабатывает ошибку и правильно регистрирует ее. Я также оказываюсь на правильной странице с ошибкой. Однако, прежде чем оказаться на правильной странице с ошибкой, я вижу еще одно промежуточное исключение:
The view 'Error' or its master was not found or no view engine supports the searched locations. The following locations were searched: ~/Views/Articles/Error.aspx ~/Views/Articles/Error.ascx ~/Views/Shared/Error.aspx ~/Views/Shared/Error.ascx ~/Views/Articles/Error.cshtml ~/Views/Articles/Error.vbhtml ~/Views/Shared/Error.cshtml ~/Views/Shared/Error.vbhtml
ASP.NET пытается загрузить страницу с ошибкой по умолчанию, хотя я пытаюсь ее обработать. У кого-нибудь есть идеи, как это предотвратить?