gpt4 book ai didi

c# - 我的filterContext.Result的ViewResult什么都不做

转载 作者:行者123 更新时间:2023-12-03 08:57:02 27 4
gpt4 key购买 nike

我有一个自定义异常(exception),在某些情况下会抛出该异常(exception)。当它被抛出时,我想呈现一个特定的 View 并将其输出到响应。

是的,在开始之前,是的,我在根级Web.config中具有<customErrors mode="On" />

我几乎在做达林在this answer中建议的操作:

public class EntityNotFoundHandleErrorAttribute : HandleErrorAttribute {

public override void OnException(ExceptionContext filterContext) {
if (!filterContext.IsChildAction && !filterContext.ExceptionHandled && filterContext.HttpContext.IsCustomErrorEnabled && filterContext.Exception is EntityNotFoundException) {
string controllerName = (string)filterContext.RouteData.Values["controller"];
string actionName = (string)filterContext.RouteData.Values["action"];
HandleErrorInfo model = new HandleErrorInfo(filterContext.Exception, controllerName, actionName);
ViewResult result = new ViewResult {
ViewName = this.View,
ViewData = new ViewDataDictionary<HandleErrorInfo>(model),
TempData = filterContext.Controller.TempData
};
filterContext.Result = result;
filterContext.ExceptionHandled = true;
filterContext.HttpContext.Response.Clear();
filterContext.HttpContext.Response.StatusCode = 500;
filterContext.HttpContext.Response.TrySkipIisCustomErrors = true;
}
}

}

并将其注册到FilterConfig.cs中(从Global.asax中调用):
public static void RegisterGlobalFilters(GlobalFilterCollection filters) {

filters.Add(new EntityNotFoundHandleErrorAttribute() {
ExceptionType = typeof(Inspect.Models.EntityNotFoundException),
View = "NotFound",
Order = 2
});


// Commented out just to be sure this isn't screwing it up.
// filters.Add(new Utilities.ElmahHandleErrorAttribute(), 1);

}

要做的是,我可以确认 OnException是否按预期运行,但 View 不会显示。取而代之的是,我得到了无用的死亡黄屏版本,告诉我如果我想查看详细信息,则应该使用 customErrors="RemoteOnly"

更重要的是,如果我将 filterContext.Result更改为 RedirectResult,那么所有这些东西都可以使用。但是我不想那样做。我只想将 View 写入响应中。

最佳答案

this.View的值为"NotFound"。将其更改为"~/Views/Errors/NotFound"可解决此问题。

关于c# - 我的filterContext.Result的ViewResult什么都不做,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21393261/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com