扩展从 JQuery 调用 Web 服务时从 ASP.NET 引发的异常

Posted

技术标签:

【中文标题】扩展从 JQuery 调用 Web 服务时从 ASP.NET 引发的异常【英文标题】:Extend the exception thrown from ASP.NET when calling a Webservice from JQuery 【发布时间】:2010-10-25 22:17:48 【问题描述】:

我正在使用 JQuery 在使用 JSON 和 WebServices 的 ASP.NET 开发环境中动态加载控件。在这个解决方案中,我有一个业务逻辑层,它具有内置的验证机制(即验证类似于 CSLA 的属性和业务规则)

当请求使用 JQuery 和 ASP.NET WebService 动态加载新控件时,我想根据业务逻辑验证机制(即服务器端验证)验证来自当前控件的输入,并在存在时通知用户有什么问题。

我设法实现了这一点,但是,当 Web 服务中的验证失败时,我想抛出一个包含验证字段 ID 和相关错误消息的客户异常。

在 JQuery 中,我测试了这个特定的 ExceptionType,并希望将错误消息动态地应用于异常类型属性中列出的控件。这就是我的问题所在。即使我使用自定义属性创建了一个自定义异常,从 WebService 以 JSON 格式传递给 JQuery 的异常仍然是一个标准异常,没有列出任何其他属性。我可以简单地在异常的消息属性中创建一个 JSON 格式的值字符串,但最终会更喜欢一些更优雅的东西。有谁知道如何覆盖 ASP.NET 针对此类情况创建的序列化异常...

提前谢谢你...

G

【问题讨论】:

我也很想知道这个问题的答案。 【参考方案1】:

几天前我遇到了非常相似的事情——基本上没有办法让 ASP.NET 生成自定义异常。这是by design,因为返回特定类型的异常会

[...] 公开实现 客户的详细信息/错误。我们可以 做一些特殊的事情 我们让通过的类型,但它的 此版本为时已晚 [...]

You could always return different HTTP status codes,并让浏览器将它们作为自定义异常处理 - 例如,500 错误意味着一件事,401 意味着另一件事,等等。我认为最好的解决方案是让您的方法返回一个带有异常堆栈 - 不优雅,但至少这样客户端拥有所有异常详细信息。

Dave Ward 也有关于 ASP.NET AJAX service errors 的信息。

【讨论】:

谢谢加布里埃尔......这真的帮助了我...... G 仅供参考,当我访问 Dave Ward 链接时,遇到了一个“狡猾的页面”块。 嗯,很有趣——我也是。真可惜。

以上是关于扩展从 JQuery 调用 Web 服务时从 ASP.NET 引发的异常的主要内容,如果未能解决你的问题,请参考以下文章

如何设置和使用 Flash AS3 文件

jQuery Datatable:服务器端处理以在单击 Next 时从 DB 中获取数据

使用 Response.Write JSON 输出从 Jquery 调用 c# asmx Web 服务

使用 JSON 从 AJAX 和 JQuery 调用简单的 Web 服务(.asmx 文件) - 解析错误

如何使用 jQuery 调用 ASP.NET Web 服务?

使用 jQuery 单击时从作为数组的按钮 ID 获取键