1

概括

[WebMethod] 的异常序列化行为在“所有在同一服务器上”使用和“真实世界使用”之间有所不同。

情况

我在foo.aspx中实现了一个 web 服务,如下所示:

[WebMethod]
[ScriptMethod(UseHttpGet = false, ResponseFormat = ResponseFormat.Json, XmlSerializeString = false)]
public static Fruit InsertUpdateFruitWebService()
{
    return FruitHelper.InsertUpdateFruit();

}

使用 jQuery - $.ajax从bar.aspx中调用 Web 服务。

如果在InsertUpdateFruit中发生某种问题,则会引发异常,则会调用 $.ajax 中指定的“错误”回调,并将 JSON blob 作为参数传递给“错误”回调函数。

好消息

当浏览器和服务器在同一台机器上时,一切正常。

不太好的消息

当浏览器和服务器不是同一台机器时,您在作为参数传递给“错误”回调的 JSON blob 中得到的所有内容是:

{"Message":"There was an error processing the request.","StackTrace":"","ExceptionType":""}

没有堆栈跟踪,没有异常详细信息等。

问题

谁能指出我可能导致这种情况的方向?

4

1 回答 1

4

好的,对此的答案是对 Web.config 文件(或您想要使用的任何 .config 文件)进行修改,以便将 customErrors 属性设置为“关闭”,就像这样......

<system.web>
    ... other stuff
    <customErrors mode="Off" />
</system.web>

在很多情况下,这可能不是一个很好的解决方案,但它在这个项目上对我有用。

信用需要去 Dave Ward 和他在http://encosia.com/use-jquery-to-catch-and-display-aspnet-ajax-service-errors/上的博客帖子(实际上在评论中)这让我想起了这 。

于 2012-06-07T01:30:14.133 回答