问题标签 [ierrorhandler]
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.
wcf - IErrorHandler 没有被绑定,也没有处理错误
我有一个 WCF 服务,我有一个绑定了 IErrorHandler 的 FaultContract,它运行良好。出于某种原因,我不知道,它在运行时停止绑定。ApplyDispatchBehavior
当我在and上放置断点时Validate
,在我开始调试时不会调用它们(它用于停止),因此当我收到错误时不会处理我的异常。
我最初按照这篇博客文章来实现它,它运行良好,但是当我添加第二个接口/端点时,它停止工作。我根据this SO post更改了所有代码,但无济于事。开始发生的另一件事是,当我使用 Microsoft 服务配置编辑器打开 web.config 时,我收到错误消息:
上面的错误在我添加第二个端点/接口后开始发生,当时我在 WCF 服务上丢失了错误处理。以下是我的网络配置:
下面是我的错误处理程序的代码:
下面是我的一个界面:
我已经浪费了无数个小时,而且我似乎无法弄清楚发生了什么破坏了我的错误处理,这很好。非常感谢您的帮助
编辑
在得到帮助后,我在工作代码下方发布。再次感谢您...下面是正确的错误处理程序:
下面是正确的 web.config
.net - 带有 IErrorHandler 的 REST WCF 服务捕获 SerializationExceptions
我有一个带有自定义 IErrorHandler 的 REST WCF 服务,这样我就可以在我的服务中捕获所有未捕获的异常并返回自定义错误消息、正确的 Http 状态代码 (500) 并记录错误。
问题是 IErrorHandler 将捕获不是源自我的代码的异常,因此如果我使用无效的 JSON 数据对服务进行 POST,我将得到一个 SerializationException。如果不是我的 IErrorHandler,我将像处理所有其他未捕获的异常一样处理它,该异常将被转换为状态代码为 BadRequest 400 的 WebFaultException。
有没有办法处理这些情况,或者我应该在我的 IErrorHandler 中捕获 SerializationExceptions 并在那里设置 BadRequest?还有哪些其他异常可能来自 WCF 堆栈而不来自我的代码?
更新:添加了我的 IErrorHandler.ProvideFault 实现
wcf - 是否可以快捷方式/绕过 WCF 中的其他 IErrorHandler?
我正在开发一个相当大的应用程序,并希望针对不同的条件以多种方式实现 IErrorHandler。但是,似乎每个错误都会调用所有实例。有没有办法告诉 WCF 错误已由特定实例处理,以便不会调用列表中剩余的任何处理程序?
(更详细一点,我们正在使用一个添加“默认”错误处理程序的 3rd 方工具包。这意味着无论我们做什么,都会调用这个处理程序并撤销我们的一些更改。)
wcf - WCF - IErrorHandler 与身份验证
我正在编写一个带有一些身份验证和自定义错误处理程序的 WCF 服务。但是,我IErrorHandler
遇到了这个问题:当身份验证引发异常时,我的实现没有受到影响,但在其他异常情况下运行得很好。
身份验证是否在IErrorHandler
构建之前运行?我是在吠叫错误的树,试图让它捕捉这些错误吗?
是的,我已经尝试(并且正在)FaultException
在我的身份验证中添加 a,而不是SecurityTokenException
.
wcf - 如何在 IErrorHandler 中获取原始异常
我在 WCF 应用程序中使用基于角色的安全性。我用 System.Security.Permissions.PrincipalPermissionAttribute 修饰了我的服务操作实现。
如果授权失败,则会引发 System.Security.SecurityException(其中包含断言的角色)。
我想记录 System.Security.SecurityException 的详细信息。但是,如果我实现 IErrorHandler,我没有将原始 System.Security.SecurityException 传递给 HandleError 或 ProvideFault 方法,而是得到 System.ServiceModel.FaultException。后一个例外不包括我要记录的任何详细信息。
有没有办法从 IErrorHandler 中获取原始的 System.Security.SecurityException,或者 WCF 中是否有另一个钩子来获取它?
wcf - IErrorHandler 在休息时为 Json 响应提供页面未找到
对于任何 webprotocol 异常,errorhandler 应该处理异常并只给出 json 响应而不是给出未找到的页面。
这是服务的配置
这是增强型WebHttp的代码
这是许可行为的代码
这是ErrorHandler的代码。
.net - 如何将日志文件位置传递给 IErrorHandler?
我有一个托管 WCF 服务的 C# Windows 服务(两个独立的项目)。我的 WCF 服务项目实现IErrorHandler
了,我想用它来将错误记录到文件中。我的 Windows 服务正在对文件进行一些日志记录,我希望我IErrorHandler
写入同一个文件。
我怎样才能做到这一点(不硬编码文件名IErrorHandler
)?
wcf - 如何处理 HTTP 响应中的 WCF SOAP 反序列化错误?
如何隐藏以下错误信息并在 WCF 中显示自定义消息?当我们在 http 请求中注入无效参数时会发生此错误
wcf - 为什么 ProvideFault 会捕获我的 TimeoutExceptions?
我有一个ProvideFault()
通过 wcf 进行通信的服务。对于大多数异常,我们想捕获它们,将它们转换为FaultException<CustomException>
,然后让调用者处理它,所以我们实现了ProvideFault()
.
到目前为止,一切都很好,而且大部分都有效。但是这个服务正在调用另一个服务,它有时会抛出一个TimeoutExeption
; 我们不想捕获那个异常,而是让它冒泡给调用者(或者甚至抛出一个新的TimeoutException
,如果需要的话)。问题是当方法抛出一个 时TimeoutException
,ProvideFault()
试图处理它并将它变成一个 FaultException。
我如何强制 wcf 让它冒泡TimeoutException
?
wcf - IErrorHandler 中的 Message.CreateMessage 创建没有包装元素/命名空间的不同消息
由于试图从我们所有的 Web 服务中删除面向方面的代码,我遇到了一个奇怪的问题。
有一个 IParameterInspector 进行验证并抛出一个在返回响应的 IErrorHandler 中捕获的 FaultException。
ResponseBase 看起来像这样:
这是由 Web 服务方法创建的所有响应的基类。
当它从服务方法返回而没有发生错误或验证错误时,消息在正文中包含一个包装元素,该元素具有一个名为“response”的命名空间,就在方法名称本身的开始标记之后:
但是,如果我尝试处理 IErrorHandler 中的故障,使用 Message.CreateMessage() 方法,从 FaultException 传递 ResponseBase 对象,结果看起来会有所不同:
从错误处理程序返回的 Message 似乎以不同的方式序列化。由于某种原因,缺少“响应”包装元素。
这是错误处理程序的实现(摘录):
我已经尝试过不同的事情:将 BodyReader 与 DataContractSerializer 一起使用,将 MessageContract 属性添加到 ResponseBase 类等等,但我不能让它看起来像框架隐式生成的响应消息。
非常感谢任何帮助,非常感谢!