问题标签 [handleerror]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
asp.net-mvc - ASP.Net MVC 3 - HandleError 属性中的顺序似乎向后工作?
问题:当我使用Order
属性的HandleError
属性时,首先应用最高序号,而不是最低序号。
细节
我想设置我的控制器以这种方式处理异常:
- 如果异常的类型是
CustomException
,请使用“CustomError”视图。 - 否则,使用默认的“错误”视图。
使用默认的 MVC 项目模板,我完成了以下操作:
HandleErrorAttribute
从全局过滤器中删除了。- 在
web.config
.
然后我将这些属性添加到HomeController
类中:
这很好用 - 如果CustomException
抛出 a ,则会显示“CustomError”视图;如果Exception
抛出 an,则显示“错误”视图。
但是,我认为Order
属性上的HandleError
属性会使事情更加明确。从MSDN 页面:
整数值越大,过滤器的优先级越低。
由此,我认为以下代码会导致在所有情况下都显示“错误”视图:
但这种情况并非如此; Order
这会导致与未指定属性时相同的行为。如果我交换订单,这会导致显示“错误”视图,即使 aCustomException
被抛出。
基本上,实际的订单优先级似乎与文档完全相反。我做错了什么还是这是一个错误?
asp.net-mvc-3 - 问题注册。ASP.NET MVC 3 中的 HandleError 属性
如果我在 global.asax.cs 文件中注册 HandleError 属性,如下所示,
我还需要在所有控制器中指定 HandlError 属性吗?
asp.net-mvc-3 - 是否可以通过 [HandleError] 机制处理 ActionFilter 异常?
我的 ASP.NET MVC 3 应用程序中有一个自定义操作过滤器 (AuthenticateAttribute),可确保用户登录。
我想在 OnActionExecuting 方法中引发异常,并希望这些异常由 HandleError 全局过滤器处理。这可能吗?如果可以,我该怎么做?
目前,在 OnActionExecuting 中引发异常会绕过 HandleError 全局过滤器 - 大概是因为它只会捕获动作本身发生的异常。
asp.net-mvc - 如何在没有母版页的情况下使用 [HandleError]
我试图在 MVC 中使用 [HandleError] 将任何未处理的异常重定向到“Shared”文件夹中的“Error.aspx”页面。默认情况下,Visual Studio 2010 MVC2 模板使用此函数创建一个简单的 MVC 应用程序。它工作正常。
但默认创建的Error.aspx 文件使用“Site.Master”。但我不想在我的应用程序中使用母版页。我删除了默认的“Error.aspx”并添加了我自己的。但这根本行不通。任何人都知道如何在没有母版页的情况下使用 [HandleError]?
谢谢 ...
asp.net-mvc - RegisterGlobalFilters 和 HandleErrorAttribute 不起作用
在与 RegisterGlobalFilters 和 HandleErrorAttribute 一直苦苦挣扎之后,我决定回到最基本的框架。我使用模板在 VS10 中创建了一个新的 MVC 3 项目。在 About-action 中添加 throw DivideByZeroException 并启动开发服务器。预计不会看到黄屏。
但我做到了。
为什么这对我不起作用?
更新
archil 和 Adam Tuliper 的建议有点奏效。错误视图被调用。
然后我继续在 RegisterGlobalFilters 中添加它。
调用了 AllOtherExceptions 视图。为什么不使用 DivideByZeroException 视图?
后续问题已在此处发布。
wcf - Log4Net 和 WCF IErrorHandler - ServiceSecurityContext.Current.WindowsIdentity.Name 返回 NullReferenceException
我正在使用 WCF 服务并且我已经实现了 IErrorHandler。在HandleError方法中,我想检索调用者的用户名,以便为Log4Net设置ThreadContext属性(将用户名与 SQL Server 中的异常详细信息一起保存)
如果我避免尝试检索调用者的用户名,我的代码运行良好。
这是 HandleError 方法中返回NullReferenceException的代码行:
似乎在IErrorHandler的HandleError方法启动时,原来的调用者信息已经被处理掉了。
有谁知道如何在 IErrorHandler 的 HandlerError 方法中检索调用者的用户名?
谢谢你的帮助!
asp.net-mvc - 当用户错误键入数据类型字符串的查询字符串 PM 的名称时,如何引发异常?
我正在使用 MVC 3 和 vs2010 和 VB.NET。我在我的控制器上使用了“HandleError”,它工作得很好而且很简单,它会自动检测未处理的异常并将用户重定向到我选择的错误页面。但是,有一个问题。
这是我正在使用的操作方法的示例:
当用户通过以下方式操作 URL 时,会自动抛出异常,并将用户重定向到我的错误页面:
- .../?DespatchNoteNo=DN1234&DespatchNoteItemId=A(DespatchNoteItemId 的数据类型不正确)
- .../?DespatchNoteNo=DN1234&DespatchNoteItem=1(DespatchNoteItemId 的参数名称不正确)
似乎自动抛出了一个异常(如果我错了,请纠正我),它被 HandleError 拾取并且用户被重定向到我的错误页面。
但是,如果用户键入以下内容:
- .../?DespatchNote=DN1234&DespatchNoteItemId=1(DespatchNote 的参数名称不正确)
似乎没有抛出异常(如果我错了,请纠正我)并且用户没有被重定向到我的错误页面,而是代码继续。
据我所见,当我在调试时,当调用 action 方法时,在上述所有场景中,参数的值都设置为 Nothing。同样,不同之处似乎在于,对于除 String 类型之外的任何类型的参数,都会引发异常,而这似乎不是 String 类型的参数。
我显然稍后会在我的应用程序的服务层再次检查变量的内容,但在上述情况下(即用户一直在操作查询字符串并且应该将他/她的手指砍掉)我不想要代码完全进入服务层,而是将用户重定向到我的错误页面(就像非字符串数据类型发生的情况一样)。
如果用户操纵字符串类型查询字符串参数的名称,有谁知道引发异常的方法?还是我走错了路?
asp.net-mvc-3 - Elmah 为 Controller Action 上的每个 HandleError 属性记录一次相同的异常
我正在使用 ELMAH 在我的 MVC3 项目中记录错误,并使用此HandleError 属性来处理预期的异常。
当一个动作有多个 HandleError 属性时,就会出现我的问题。Elmah 为操作中的每个 HandleError 属性发送电子邮件并记录相同的异常,再加一个。
我链接到的答案提到这是一个可能的副作用,但我不知道如何解决这个问题。
我最担心的是下面详述的操作,因为预计会有许多异常,用户需要查看不同的原因,其中任何一个都可能经常发生。
asp.net-mvc - MVC HandleError 过滤器没有捕捉到异常
我有一个 MVC 3 Web 应用程序,我在其中使用“ HandleError ”动作过滤器进行异常处理。我的这个动作过滤器实现如下:
这是派生我所有控制器的基类。在我的 web.config 我有我的共享文件夹中有一个Error.cshtml(.cshtml 因为我使用 Razor)。一切正常,我得到了很好的异常处理(由我的函数格式化)
最近,不知何故,我得到了“未处理的异常 (YSOD) ”,并且由于“customErrors”,我得到了默认的 ASP.Net 错误消息,它没有关于实际异常的任何信息。这发生在 AJAX 回帖中。但是,我无法重现它。
任何类型的错误都可能逃脱此操作过滤器吗?
c# - 如何直接从特定于应用程序的异常映射到 Http 异常?
我正在开发一个 ASP.NET MVC 3 应用程序。在我们App所谓的“业务层”中,我们做出了一个决定,总是根据情况抛出一些特定类型的异常。当用户试图做他未授权的事情时,我们有一个异常类型层次结构,以及当应用程序找不到给定项目(通过 Id 或名称或其他)时的特殊异常。
这在我们的 C# 代码中看起来像这样:
... custom s 的位置SomethingNotFoundException
和位置。NotAuthorizedException
Exception
这种异常和 Http 状态码(404 Not Found / 403 Forbidden)之间存在某种直接映射,我们希望我们的 Controller 方法相应地处理这些错误(显示 404/403 CustomError 页面和类似的东西) . 现在,我们想要的是避免在我们的控制器操作中这样做:
我很确定必须有一种方法可以使用自定义 HandleErrorAttribute 或自定义 ActionFilterAttribute 并将其注册到 Global.asax,但我不知道如何让它工作。
尝试 1:HandleErrorAttribute
我首先尝试创建一个 HandleErrorAttribute 的子类,并像这样覆盖该OnException
方法:
...并将其添加到GlobalFilterCollection
Global.asax ...但它仍然像通常的 500 错误一样处理,而不是显示 404/403 自定义错误页面...
尝试 2:ActionFilterAttribute
我也尝试过使它成为一个ActionFilterAttribute
并覆盖这样的OnActionExecuted
方法:
...但是,我仍然得到 500 错误页面而不是 404 或 403 ...
难道我做错了什么 ?有没有更好的方法?