C# ASP.NET MVC区域中的错误处理

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文件夹

我正在开发ASP.NETMVC应用程序,为了处理错误,我遵循了以下步骤。因此,
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()
...