繁体   English   中英

Custom HandleErrorAttribute-如何在不覆盖ASP.NET的情况下设置结果?

[英]Custom HandleErrorAttribute - How to set result without ASP.NET overriding it?

我正在努力使我的ASP.NET MVC应用程序正确处理HTTP状态代码,并在需要时显示它们的视图。 我避免了所有开箱即用的错误页面处理,因为它不是语义上的(例如,框架始终使用customErrors执行302重定向)。

我有一个AuthorizeAttributeActionFilterAttribute都可以正常工作,并且显示了我的自定义视图。 但是,我的HandleErrorAttribute工作不正常。

public override void OnException(ExceptionContext context) {
    HttpStatusCode httpStatusCode = HttpStatusCode.InternalServerError;

    var e = context.Exception;

    if (e is HttpException) {
        var httpException = (HttpException)e;
        httpStatusCode = (HttpStatusCode)httpException.GetHttpCode();
    }

    context.Result = MyResultBuilder.SetViewByHttpCode(context.HttpContext.Request, httpStatusCode, context.Controller.ViewData.ModelState);
}

我正在设置Result属性,但是在某些时候管道覆盖了我的结果,因为我最终得到的是死亡黄屏(YSOD)而不是我定义的视图结果。

如何在HandleErrorAttribute设置自定义视图结果?

尝试将ExceptionHandled属性设置为true;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM