我有一个页面正在执行jQuery Ajax调用WebMethod在我的一个ASPX页面。在某些情况下,我的WebMethod正在抛出一个带有错误消息的异常。这个错误信息对用户界面非常重要,因为它告诉用户怎么说,所以他可以修复他的表单。从WebMethod获取错误消息,同时保持Web.Config的安全
这在开发环境中工作正常。但是,在我的生产Web.Config中,我需要将customErrors设置为“开”,所以我不会显示重要信息。而且,我的IIS也覆盖了HTTP 500错误。
我尝试了ASMX的WebServices,它工作的很完美。 IIS不覆盖我的HTTP 500,并且customErrors不隐藏WebService发送的消息。但是现在不可能将我所有的ASPX WebMethods迁移到ASMX文件。
我在寻找指导方针。我的UI如何获得我的WebMethod的错误,同时保持我的Web.Config安全生产?
这就是我最终做的。但是我不喜欢这个解决方案,因为即使有错误,服务器总是用Http 200响应。你知道使用http标准处理我的异常的方法吗? – NLemay 2013-09-25 13:10:39
500不是使用HTTP标准处理它的好方法,因为这意味着内部错误。 如果你想用HTTP标准来处理它,请使用每个说的规范。如果错误来自客户端(即:您使用jQuery发送数据并且此数据无效),则使用4XX状态码。 从此开始,您可以使用jQuery AJAX调用失败的回调(例如,参见[this](http://api.jquery.com/jQuery.ajax/#example-3))。使用失败的回调可以显示一条消息,而不必显示错误屏幕 – CharlesAD 2013-09-25 13:17:22
尽管这是一个好方法,但使用WebMethods并不重要,因为它们不是很RESTful。您应该检查ASP.NET Web API,看看它们是否更符合您的需求(asmx /页面方法正在变老) – CharlesAD 2013-09-25 13:19:34