Я хочу создать страницу пользовательских ошибок для моего проекта MVC4 с помощью моей собственной модели.Пользовательские ошибки для MVC4
Я использовал подход от Darin Димитрова из Custom error pages on asp.net MVC3
Теперь я хотел использовать свою собственную (тест) модель:
public class ErrorModel
{
public string message { get; set; }
}
Теперь, когда я использую режим CustomErrors = «Off» все работает отлично, но только на локальной машине. Когда я обращаюсь к машине с удаленной машины, отображается ошибка по умолчанию. (Что предполагаемый путь - я думаю)
Теперь, когда я устанавливаю система внезапно ожидает свою собственную модель, а не мой:
«Модель элемент передается в словарь типа«System.Web.Mvc .HandleErrorInfo ', но для этого словаря требуется элемент модели типа Project.Controllers.ErrorModel.
Как я могу заставить систему отображать страницу через customErrors = «Выкл.» В удаленной системе, когда режим Off или как заставить его использовать мою модель вместо модели HandleErrorInfo?
My ErrorController
public class ErrorController : Controller
{
public ActionResult General(Exception exception)
{
var viewModel = new ErrorModel()
{
message = exception.Message
};
return View(viewModel);
}
Взгляд:
@model SRMv2.WebUI.Controllers.ErrorModel
@{
}
@Html.Raw(Model.message)
И в Global.asax
protected void Application_Error()
{
HttpContext.Current.Response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1));
HttpContext.Current.Response.Cache.SetValidUntilExpires(false); HttpContext.Current.Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches);
HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache);
HttpContext.Current.Response.Cache.SetNoStore();
var exception = Server.GetLastError();
var httpException = exception as HttpException;
Response.Clear();
Server.ClearError();
var routeData = new RouteData();
routeData.Values["controller"] = "Errors";
routeData.Values["action"] = "General";
routeData.Values["exception"] = exception;
Response.StatusCode = 500;
if (httpException != null)
{
Response.StatusCode = httpException.GetHttpCode();
switch (Response.StatusCode)
{
case 403:
routeData.Values["action"] = "Http403";
break;
case 404:
routeData.Values["action"] = "Http404";
break;
}
}
IController errorController = new ErrorController();
var rc = new RequestContext(new HttpContextWrapper(Context), routeData);
errorController.Execute(rc);
}
Почему customErrors = "Off" показывает ваши сообщения об ошибках? Может быть, проблема где-то еще. – user1477388
Потому что я вызываю ErrorController в глобальном.asax на Application_Error, см .: http://stackoverflow.com/questions/5226791/custom-error-pages-on-asp-net-mvc3 – Vulcano