Я применил обработку исключений, используя приведенный ниже код. [Edited Start] Я не знаю, почему он вызывает просмотр дважды. [Отредактировано Готово]
Basecontroller
public class BaseController : Controller
{
protected override void OnException(ExceptionContext filterContext)
{
if (filterContext.HttpContext.IsCustomErrorEnabled)
{
filterContext.ExceptionHandled = true;
if (filterContext.Exception.GetType() == typeof(ArgumentOutOfRangeException))
{
this.View("OutOfRange").ExecuteResult(this.ControllerContext);
}
else
{
this.View("Error").ExecuteResult(this.ControllerContext);
}
}
base.OnException(filterContext);
}
}
HomeController
public class HomeController : BaseController
{
public ActionResult Exception2()
{
throw (new ArgumentOutOfRangeException());
}
public ActionResult Exception3()
{
throw (new Exception());
}
}
Просмотр ошибок (только для общей папки)
@model System.Web.Mvc.HandleErrorInfo
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<title>Error</title>
</head>
<body>
<h2>
Sorry, an error occurred while processing your request.
</h2>
<h3>
@if (Model != null)
{
<p>@Model.Exception.GetType().Name<br />
thrown in @Model.ControllerName @Model.ActionName</p>
<br />
@Model.Exception
}
</h3>
</body>
</html>
Просмотр OutOfRange (только для общей папки)
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<title>OutOfRange Exception</title>
</head>
<body>
<div>
<h3>
@if (Model != null)
{
<p>@Model.Exception.GetType().Name<br />
thrown in @Model.ControllerName @Model.ActionName</p>
<br />
@Model.Exception
}
</h3>
</div>
</body>
</html>
URL-адрес выполнения: http://[domainName]/Home/Exception2
Здесь он работает нормально. [EDITED: здесь он также вызывает дважды.]
URL-адрес выполнения: http://[domainName]/Home/Exception3
Здесь не работает нормально. Вы можете видеть, что "Извините, произошла ошибка при обработке вашего запроса". идет дважды. Когда я отлаживаю приложение с использованием вышеуказанного URL-адреса, представление Error отображается дважды (первая модель времени равна нулю, а вторая модель времени содержит некоторое значение). Могу ли я узнать, что не так с моей реализацией?