C# 在Asp MVC中显示静态数据类的自定义错误

C# 在Asp MVC中显示静态数据类的自定义错误,c#,asp.net,asp.net-mvc,asp.net-mvc-4,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 4,大家好,在我的mvc项目中,我有一个静态类,我在其中加载静态数据,然后在控制器中使用它 public class StaticData { public static List<ITEM_TYPES> _itemTypes ; public static void LoadData() { try { using (pfservicereference.Service1Client ctx = n

大家好,在我的mvc项目中,我有一个静态类,我在其中加载静态数据,然后在控制器中使用它

  public  class StaticData
{
    public  static List<ITEM_TYPES> _itemTypes ;

    public static void LoadData()
    {
        try
        {
           using (pfservicereference.Service1Client ctx = new Service1Client())
            {
                _itemTypes = ctx.GetItemTypes();

            }
        }
        catch (Exception ex)
        {

            throw new HttpException(500,ex.Message);
        }

    }

}
但是如果我在这里有HttpException,如何重定向到自定义错误页面呢


我已将customErrors mode=设置为On,但没有帮助。是否有任何重定向方法?

您可以使用以下方法重定向到自定义错误页面

方法1: 您可以使用try-catch-block-insideaction方法并重定向到自定义错误页面

    public ActionResult Index()
    {
        try
        {
             //Code logic here
        }
        catch (HttpException ex)
        {
            if (ex.ErrorCode == 500)
                return RedirectToAction("error", "error");
        }
        return View();
    }
方法2: 您可以根据可以重定向到自定义错误页面的错误代码,使用异常过滤器在应用程序级别捕获错误

对于这种方法,您可以在global.asax或controller级别中创建单独的异常筛选器类和映射的应用程序级别

    protected override void OnException(ExceptionContext filterContext)
    {
        if (filterContext.Exception is HttpException)
        {
            HttpException exception = filterContext.Exception as HttpException;
            if (exception.ErrorCode == 600)
                filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary
            {
                { "action", "Error" }, 
                { "controller", "Error" }
            });

            filterContext.ExceptionHandled = true;
        }
    }

您将在控制器中捕获一个异常,这就是执行重定向的地方。执行重定向不是这个静态类的工作。我还将使用静态构造函数而不是LoadData方法请参见