重定向从asp.net MVC中的Basecontroller中的void方法

时间:2016-04-05 06:56:59

标签: asp.net-mvc redirect

我是asp.Net MVC的新宠。我有一个场景,如果在应用程序内发生自定义异常,那么我需要重定向到登录页面。 catch块看起来像..

catch (Exception ex){                
                WriteLog(ex, TalxCategories.Business);
            }

public virtual void WriteLog(Exception ex, Category category){
                CsaWebLogger.Current.WriteError(ex, category);
            }

我面临的问题就像 我需要从WriteLog方法重定向。因为方法是无效的我无法使用 返回重定向.. 我试过的另一种方法就像..

var context = new RequestContext(
    new HttpContextWrapper(System.Web.HttpContext.Current), 
    new RouteData());
var urlHelper = new UrlHelper(context);
var url = urlHelper.Action("Index", new { OtherParm = "other value" });
System.Web.HttpContext.Current.Response.Redirect(url);

这个方法对我来说也没用。请帮我从WriteLog方法重定向到Login动作。

1 个答案:

答案 0 :(得分:0)

将[HandleError]添加到您的控制器或filterconfig.cs中作为filters.Add(new HandleErrorAttribute())如果不存在

为异常处理创建自定义过滤器 请按照以下步骤

1.创建一个继承自FilterAttribute和IExceptionFilter接口的类 并调用WriteLog(),如图所示

public class CustomExceptionHandler : FilterAttribute ,IExceptionFilter
{
public void OnException(ExceptionContext filterContext)
    {
        WriteLog(filterContext.Exception, TalxCategories.Business);
    }
}

1.Decorate您的控制器[CustomExceptionHandler]或在FilterConfig中注册为filters.Add(new CustomExceptionHandler()); 而已。 你正在实现两件事。记录并重定向到自定义页面