如何处理javascript Web应用程序在c#中引发的异常?

时间:2012-09-06 09:01:19

标签: c# javascript exception

我正在开发一个带有html5和javascript的客户端构建的Web应用程序,整体上使用dojo框架(我使用xhr.post函数与服务器通信)。服务器端是c#中的asmx服务。

问题出现了:当我的服务的web方法抛出异常时:

        try
        {
            throw new Exception("TEST");
        }
        catch (Exception ex)
        {
            throw ex;
            // TODO: send some info to the client about the error
        }

实现客户端而不是发生错误并触发错误回调函数:

        deferred = xhr.post({
            url: that.config.urlService,
            handleAs: that.config.handleAs,
            contentType: that.config.contentType,
            postData: that.config.parameters
        });

        deferred.then(function (res) {
            that.success(res);
        },
            function (err) {
                 if (that.config.callbackFail) {
                     that.config.callbackFail(err, that.config.parameters);
                 }
            }
        );

但是在'错误'参数中我没有异常信息,我有消息:

  

'NetworkError:500内部服务器错误 - http:/.../ Services / Applications / Metrawa / ServiceManagement / WSJob.asmx / Filter'

并使用firebug检查对服务器的调用,在响应选项卡中我可以看到奇怪的字符,就像异常没有被序列化一样。

我想要的是在javascript中获取异常信息。我已经搜索了一些关于此的信息,比如创建一个自己的可序列化异常类,但它既不起作用也不起作用。任何解决方案?

提前致谢。

2 个答案:

答案 0 :(得分:1)

您可以选择在服务器端代码中处理异常并将其作为JSON,XML甚至String发回 - 即。客户可以理解的东西。

答案 1 :(得分:0)

我会捕获异常服务器端并始终返回带有“Result”属性的有效对象:

例如res.Result(如“OK”或“ERR”等并在客户端上处理)