C# ASP.NET MVC区域中的错误处理
我正在开发ASP.NETMVC应用程序,为了处理错误,我遵循了以下步骤。因此,C# ASP.NET MVC区域中的错误处理,c#,asp.net,asp.net-mvc,asp.net-mvc-5,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 5,我正在开发ASP.NETMVC应用程序,为了处理错误,我遵循了以下步骤。因此,FilterConfig.cs中的代码: public static void RegisterGlobalFilters(GlobalFilterCollection filters) { filters.Add(new HandleErrorAttribute()); filters.Add(new CustomHandleErrorAttribute()); } 我在Controllers文件夹
FilterConfig.cs
中的代码:
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
filters.Add(new CustomHandleErrorAttribute());
}
我在Controllers文件夹中添加了ErrorController:
public class ErrorController : Controller
{
// GET: Error
public ActionResult Index()
{
return View();
}
}
我还创建了视图以在视图/错误中显示错误:
@model System.Web.Mvc.HandleErrorInfo
@{
ViewBag.Title = "Index";
}
<h1 class="text-danger">Custom Error.</h1>
<h2 class="text-danger">An error occurred while processing your request.</h2>
<h2>Exception details</h2>
<p>
Controller: @Model.ControllerName <br />
Action: @Model.ActionName<br />
Message: @Model.Exception.Message <br />
StackTrace: <br />
</p>
<pre>Exception: @Model.Exception.StackTrace</pre>
RouteConfig.cs
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
// Visual Studio 2013 Browser Link caused
// "The controller for path '/9ac086a69364466a841e03e001f946fd/arterySignalR/ping' could not be found."
#if DEBUG
routes.IgnoreRoute("{*browserlink}", new { browserlink = @".*/arterySignalR/ping" });
#endif
// with code above, we can still use Browser Link feature without getting error
routes.MapRoute(
"AxCustomer",
"AxCustomer/{action}/{id}",
new { controller = "AX_CUSTTABLE", action = "Index", id = UrlParameter.Optional },
namespaces: new[] { "SalesSupportSystem.Controllers" }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
namespaces: new[] { "SalesSupportSystem.Controllers" }
);
}
}
filterContext.RouteData.Values["area"] = "Admin";
filterContext.Result = new ViewResult()
...
这是未测试的,但是您是否尝试在
filterContext.RouteData.Values[“area”]=“Admin”中指定Admin
区域设置过滤器上下文。结果之前的代码>
像这样:
你能发布HandleErrorAttribute.cs
和CustomHandleErrorAttribute.cs
的代码吗?@JoeMighty我更新了这个问题,HandleErrorAttribute是MVC的默认值。这个问题的答案是:怪异。如果在ViewName=View
添加调试点,View
有什么值?我的似乎按预期工作。您在RouteConfig.cs
和AdminAreaRegistration.cs
中的路由是什么样子的?对不起@JoeMighty,我昨天回家了。如果我在ViewName处调试,RouteConfig.cs的值为“Error”,我更新了问题
filterContext.RouteData.Values["area"] = "Admin";
filterContext.Result = new ViewResult()
...