【发布时间】:2011-02-02 12:58:37
【问题描述】:
总的来说,我对 WCF 还是很陌生。我在 ASP.NET Web 应用程序中使用相当简单的 .SVC 服务所获得的一点经验。
我第一次尝试使用 WCF 项目,结果遇到了一个大问题。
我相信大多数人都知道,出于某种奇怪的原因,在一个 web 应用程序中 customErrors 模式设置为 On
<customErrors mode = “On” />
服务(.ASMX 和 .SVC)不会向客户端返回异常详细信息。相反,异常和堆栈跟踪被清空,消息总是显示“处理请求时出错”,这根本没有帮助。
当服务直接托管在 Web 应用程序本身中时,可以通过将服务放置在专用文件夹中并将该文件夹的 customErrors 设置为“关闭”来轻松解决此限制。
但是,我遇到了同样的问题,但没有从位于单独 WCF 项目中的服务返回异常。问题是,我不知道如何解决这个问题。
简而言之:我需要让我的 WCF 项目服务向客户端发送真正的异常——或者至少是原始异常消息,而不是“处理请求时出错”。
编辑:我可能应该在这里指出,我想返回异常的原因是我经常通过 Ajax (jQuery) 从客户端调用这些服务,并且想如果它是“正常”返回(例如,使用绿色文本),则以不同的方式格式化返回消息,如果是错误则使用红色文本。我在 $.ajax 对象的错误处理程序中处理消息格式,这显然只会在服务失败时运行。
我还应该指出,关闭 customErrors 一切正常:
<customErrors mode = “Off” />
所以,我想也许可以设置一些配置属性来阻止 ASP.NET 运行时在使用 customErrors 时终止我的异常。
Here 是我在此找到的一些相关信息。
【问题讨论】:
标签: web-services exception-handling wcf