asp.net 有谁能给我出个给予吗?关于这个异常处理

holgip5t  于 2023-10-21  发布在  .NET
关注(0)|答案(1)|浏览(131)

Link
在这个URL中,
请问前两步有谁能解释一下吗?
System.Web.Mvc.dll附带HandleErrorAttribute类,该类包含.. wait it it... HandleError属性。这些信息在本系列后面的文章中才重要,但HandleErrorAttribute类继承自FilterAttribute类,并实现IExceptionFilter接口-该接口需要具有以下签名的方法。

public virtual void OnException(ExceptionContext filterContext);

我需要创建接口吗?
我需要在哪里写OnExceptoin?
谢谢

nwo49xxi

nwo49xxi1#

您不需要创建任何接口,也不需要担心OnException方法或其实现。你需要做的就是用[HandleError]属性装饰你的控制器,像这样:

[HandleError]
public class HomeController : Controller {}

然后继续在这个控制器中编写一些可能抛出异常的操作,而不是YSOD(死亡黄屏),你会看到一个你配置的自定义错误页面。您还需要在web.config中激活自定义错误:

<system.web>
    <customErrors mode="On" />
</system.web>

默认情况下,~/Views/Shared/Error.aspx视图将在异常情况下呈现。您可以根据抛出的异常定义特定的错误视图:

[HandleError(ExceptionType = typeof(ApplicationException), View = "AppErrorPage")]

这意味着如果抛出ApplicationException~/Views/Shared/AppErrorPage.aspx视图将被呈现。
这就是框架为您提供的开箱即用的功能。如果这还不足以满足您的需求,并且在您的特定场景中不起作用,您可能会开始担心实现自定义IExceptionFilter

相关问题