[WebMethod]的异常序列化行为在'all on same server'使用和'real world use'之间有所不同。
我在 foo.aspx 中实施了一个网络服务,如下所示:
[WebMethod]
[ScriptMethod(UseHttpGet = false, ResponseFormat = ResponseFormat.Json, XmlSerializeString = false)]
public static Fruit InsertUpdateFruitWebService()
{
return FruitHelper.InsertUpdateFruit();
}
使用jQuery - $ .ajax从 bar.aspx 中调用web服务。
如果 InsertUpdateFruit 中出现某种问题,则抛出异常,调用$ .ajax中指定的'error'回调,并将JSON blob作为参数传递给'error'回调功能
当浏览器和服务器在同一台机器上时,一切正常。
当浏览器和服务器不是同一台机器时,您所接收的JSON blob作为“错误”回调的参数传递的是:
{"Message":"There was an error processing the request.","StackTrace":"","ExceptionType":""}
没有堆栈跟踪,没有异常细节等等。
有人能指出我可能导致这种情况的方向吗?
答案 0 :(得分:4)
确定答案是对Web.config文件(或您想使用的.config文件)进行修改,以便将customErrors属性设置为'Off',如此...
<system.web>
... other stuff
<customErrors mode="Off" />
</system.web>
在很多情况下,这可能不是一个很好的解决方案,但在这个项目中它对我有用。
信用需要去Dave Ward和他在http://encosia.com/use-jquery-to-catch-and-display-aspnet-ajax-service-errors/发布的博客(实际上是在评论中),这让我想起了这一点。