asp.net / [WebMethod] - 仅为localhost序列化的异常?

时间:2012-06-06 11:08:38

标签: jquery asp.net web-services

摘要

[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":""}

没有堆栈跟踪,没有异常细节等等。

问题

有人能指出我可能导致这种情况的方向吗?

1 个答案:

答案 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/发布的博客(实际上是在评论中),这让我想起了这一点。