问题标签 [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.
json - 使用 IErrorHandler 中的 WebFaultException
如果我从 中派生所有异常WebFaultException
,并直接从我的服务中抛出它们,则设置中的 StatusCode 将WebFaultException
传递给客户端。我宁愿不必这样做,因为我宁愿NotImplementedException
从我的代码中抛出像 , 这样的通用异常。
我已经设置了一个 IErrorHandler,期望我能够捕获像这样NotImplementedException
的异常,然后只转换到WebFaultException
那里。
我的代码如下所示:
单步执行时,我看到我正在访问 ProvideFault 中的代码,但返回给客户端的状态是 400,而不是 501。此外,正文是:
- 为什么没有返回正确的状态码?
- 为什么json中没有body?
补充:我已经尝试过将 AutomaticFormatSelectionEnabled = false 设置为 webhttpbehavior 的建议,但它仍然不起作用。我是自我托管的,但我认为这不会有所作为。这是我用来设置服务的代码:
json - WCF json错误处理程序导致异常
我在端点中配置了两种行为:
- 一种是 json 序列化,它与这里的示例基本非常相似。重要的是以下几点:
- 另一个用于错误处理。这样当抛出异常时,将向客户端发送一条 json 格式的消息。代码取自此处(答案以:“这是基于上面的一些信息的完整解决方案:”)。
当我只使用行为 1 时,一切正常。当我添加第二个行为时,我得到以下异常:
{"ExceptionType":"System.InvalidOperationException","Message":"传入的消息具有意外的消息格式 'Raw'。操作的预期消息格式是 'Xml'、'Json'。这可能是因为 WebContentTypeMapper尚未在绑定上配置。有关详细信息,请参阅 WebContentTypeMapper 的文档。"}
这是我的 web.config 的样子:
有任何想法吗?
c# - WCF 添加服务时更新配置文件失败
我在默认服务行为中添加了一个服务行为扩展,用于记录未处理的异常,它按预期工作。
但是,当我尝试将新服务添加到项目中时,出现以下错误:
更新配置文件失败
无法加载为扩展“UnhandledExceptions”注册的类型“MyApp.WebServices.Behaviours.Extensions.UnhandledExceptionExtention, MyApp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null”。Web.config 第 XX 行
为了解决这个问题;我注释掉服务行为中的扩展用法,添加服务并撤消配置更改。
尽管这是一个可行的解决方案,但我宁愿不必依赖我自己和其他开发人员记住看似不必要的过程。
有没有办法解决这个问题?
wcf - WCF IErrorHandle 异步问题
据我所知,HandleError 应该针对服务异步运行,但以下代码证明它在同一个线程上运行服务的作用:两种方法都将 4 显示为线程号,更重要的是 HandleError 会挂起服务。
twitter-bootstrap - 几秒钟后引导警报消失
我尝试使用 Bootstrap 和错误处理创建一个简单的表单。我创建了一个表单,提交后点击错误应该出现,但错误只出现几秒钟......
这里的代码:
http://codebin.org/view/8e8b46ae
谢谢 :)
c# - 如何将对象注入 WCF 的 IErrorHandler?
我有这种情况:我有 WCF 服务。我正在MyErrorHandler
使用已实现的接口处理所有异常IErrorHandler
。整个工作代码如下。
我想做什么,但不知道如何:我想将一个对象(例如 ILogger)注入到MyErrorHandler
类中。这基本上意味着我必须在这里注入一个对象:[GlobalErrorHandlerBehaviour(typeof(MyErrorHandler))]
. 你能帮我解决这个问题吗?
顺便提一句。我想使用 DI 并在IErrorHandler
我不想使用private static readonly
记录器的方法中注入一些东西。
c# - 在 IIS 中托管时将依赖项注入 IErrorHandler
我刚刚阅读了这个很好的答案,如何将依赖项注入 WCF 服务。解决方案非常简洁,但我有一个问题。
此答案中的解决方案使用自托管(控制台应用程序),因此可以实现自己的ServiceHost
and ErrorHandler
and do:
我的问题是,如何在 ASP.NET Web 应用程序主机中执行此操作?我试图在通过 IIS 托管时向服务中注入一些东西。任何帮助都会很棒!
c# - 当 HTTP 状态码为 401 Unauthorized 时,IErrorHandler 返回错误的消息体
我已经实现了 IErrorHandler 来处理我的 restful WCF 服务的构造函数中抛出的授权异常。当捕获到一般异常时,我的自定义类型按预期返回,但 ContentType 标头不正确。
但是,当错误处理程序尝试返回 401 Unauthorized http 状态代码时,消息正文将被覆盖为默认类型,但 ContentType 标头应如此。
显然这里出了点问题,但我不确定是什么。
如何实现 IErrorHandler 以使其在 json 中返回具有正确标头的自定义类型?
BaseDataResponseContract 对象:
这是我要返回的对象。我的应用程序中的所有其他对象都继承自该对象。当抛出异常时,我们真正关心的是 http 状态码和错误消息。
IErrorHandler 实现(为简洁起见未显示日志记录):
IServiceBehavior 实现:
网络配置:
最后,我在使用 WebFaultException 时看到了类似的行为。我的想法是,这是一些深埋的 .Net 恶作剧的结果。我选择实现 IErrorHandler 以便我可以捕获任何其他可能无法处理的异常。
参考:
https://msdn.microsoft.com/en-us/library/system.servicemodel.dispatcher.ierrorhandler(v=vs.100).aspx
其他示例:
IErrorHandler 似乎没有处理我在 WCF 中的错误 .. 有什么想法吗?
c# - WCF:IErrorHandler 实现未提供指定的通用错误
我已经实现ProvideFault
了IErrorHandler
接口的方法如下:
然后我将此实现添加到每个调用ChannelDispatcherBase
的另一个实现中。我的服务实现用这个属性装饰,并且还具有:IServiceBehavior
GlobalErrorBehaviorAttribute
FaultContractAttribute
但是对服务实现中的方法的测试总是失败,抱怨收到的错误不是类型FaultException<ResponseModel>
,而是FaultException
:
为什么我收到FaultException
而不是FaultException<ResponseModel>
在客户端?
c# - 在按钮单击事件上实现 IDataErrorInfo
我正在尝试使用绑定实现对文本框的按钮单击验证。基本上,当我单击提交时,我的文本框没有变红并给我“必需”错误,这是我向其中添加文本的时候。
我是验证的新手,并且在沮丧中断断续续地看了将近一个星期。我想我的回答可能和propertychangedevent有关?但我不确定并求助于专业人士。
必须感谢所有和任何有关此的帮助。
这是我的模型类:
这是我的按钮 + 文本框的 XAML;
这是我的代码;