ASP.NET调用JQuery Webservice时抛出的异常如何扩展?

5
我正在使用JQuery通过JSON和WebServices在ASP.NET开发环境中动态加载控件。在这个解决方案中,我有一个业务逻辑层,其中包含内置的验证机制(即验证属性和业务规则,类似于CSLA)。
在使用JQuery和ASP.NET WebService动态加载新控件时,我想将当前控件的输入与业务逻辑验证机制(即服务器端验证)进行验证,并在出现问题时通知用户。
我成功实现了这一点,但是当Web服务中的验证失败时,我想抛出一个自定义异常,其中包含验证字段ID和相关的错误消息。
在JQuery中,我测试了这种特定的异常类型,并希望动态地将错误消息应用于异常类型属性中列出的控件。这就是我的问题所在。尽管我创建了一个具有自定义属性的自定义异常,但从WebService以JSON格式传递给JQuery的异常仍然是标准异常,没有任何其他列出的属性。我可以在异常的消息属性中简单地创建一个JSON格式的字符串,但最终还是更喜欢一些更优雅的东西。有人知道如何覆盖由ASP.NET创建的序列化异常,以应对这种情况吗...
提前感谢您...

我也很想知道答案。 - Max Schmeling
1个回答

3
我几天前遇到了非常相似的问题 - 基本上没有办法使ASP.NET生成自定义异常。这是按设计,因为返回特定类型的异常会向客户端公开实现细节/错误。我们可以使用特殊的异常类型进行处理,但对于此版本来说为时已晚。 您始终可以返回不同的HTTP状态代码,并让浏览器将它们处理为自定义异常 - 例如,500错误意味着一件事情,401意味着另一件事情等等。我认为最好的解决方案是使您的方法返回一个包含异常堆栈的字符串 - 这样至少客户端就拥有了所有异常详细信息。
Dave Ward还提供了关于ASP.NET AJAX服务错误的信息。

谢谢 Gabriel...这真的帮了我很大的忙...G - gg.
所有人FYI,我访问Dave Ward的链接时遇到了一个“不良页面”阻止。 - Steve Hibbert
哦,有趣 - 我也是。真遗憾。 - Gabriel Florit

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接