【问题标题】:Getting Exception Details from ASP.NET PageMethods on the Client SIde从客户端的 ASP.NET PageMethods 获取异常详细信息
【发布时间】:2010-11-01 03:51:05
【问题描述】:

我有一个页面方法,我从我的 JavaScript 调用它 说

Pagemethods.MyMethod(MyParameter, onsucess, onfailure);

在后面的代码中,我有这样的东西:

[WebMethod]
public static void MyMethod(Param)
{
   try{
     //DoSomething..
   }
   catch(exception ex)
   {
      //Log the exception and rethrow
      throw new exception(ex.innerexception);
   }
}

现在我面临的问题是:

每当我遇到异常时, 我重新从后面的代码中抛出异常

但在 onfailure 方法中,我只收到一条通用消息,说 “服务器方法 MyMethod 失败,出现以下错误:”

我似乎没有得到异常详细信息,只有一般异常,

如何获取 JavaScript 的异常详细信息,以便根据 UI/JavaScript 端进行处理。

我已验证,web.config 中的自定义错误设置不是问题。

有人能告诉我这里发生了什么吗?

PS:我已经遍历了每一行代码,记录后的异常会重新抛出正确的异常详细信息,即消息。

【问题讨论】:

  • 你的异常处理很糟糕。记录异常后,只需使用throw;。您的代码正在破坏堆栈跟踪,并丢失异常详细信息。

标签: web-services exception asp.net-ajax asmx pagemethods


【解决方案1】:

据我所知,只要你有

<customErrors mode="off" />

在您的 web.config 中,消息将返回给客户端。你确定你有这个设置吗?

要显示与错误相关的消息,您需要将函数的名称作为页面方法调用的第三个参数:这个函数可以很简单:

function onfailure( result )
{
   alert( result.get_message() );
}

这就是我们所拥有的,并且可以正常工作

【讨论】:

  • 是的,我确实有自定义错误模式“关闭”但是我没有得到的是为什么甚至会收到一般消息“服务器方法 MyMethod 失败并出现以下错误:”并且错误详细信息中没有那么多.
  • 你的 javascript onfailure 函数中有什么代码?您是否使用 get_message 提取“消息”?
  • 这是我的 onfailure 方法的样子 function onCallFailure(ex, userContext, methodName){ alert(ex.get_message());} 这是我看到我说我得到的一般错误消息的地方
  • 我的应用确实有一个母版页,这个母版页有启用了页面方法的脚本管理器。在使用上述母版页的其中一个页面中,有一个对 MyMethod 的页面方法调用。
  • get_statusCode() 和 get_exceptionType() 返回什么?
【解决方案2】:

在 web.config 的 &lt;system.web&gt; 部分设置 &lt;customErrors mode="off" /&gt; 后,尝试这些函数以从 PageMethod 的 onfailure 中获取所有异常详细信息:

function onfailure(error) {                
    alert("Error: " + error.get_message() + "; " + 
        "Stack Trace: " + error.get_stackTrace() + "; " + 
        "Status Code: " + error.get_statusCode() + "; " + 
        "Exception Type: " + error.get_exceptionType() + "; " + 
        "Timed Out: " + error.get_timedOut());
}

我发现错误的状态代码比错误消息本身更有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-01
    • 1970-01-01
    • 2013-03-31
    • 1970-01-01
    相关资源
    最近更新 更多