当前位置:编程学习 > asp >>

asp.net环境下Webservice服务的错误处理

 

  在Asp.net Ajax技术中,我们在客户端往往用脚本调用WEB服务,当服务出现错误时(超时、除零),如何通知客户端,客户端又如何根据获取的信息提示用户?

    方法其实很简单,我们直接看下面的代码。

    1、新建一个服务: www.zzzyk.com

     [WebService(Namespace = "http://tempuri.org/")]

     [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]

     [ScriptService]   //这里需要用到ScriptService方法,使得客户端可以用脚本访问此服务

     public class ErrorHand : System.Web.Services.WebService

    {

     [WebMethod]  //定义一个除法函数,注意b不能为0(当然我们演示的时候,输入的b肯定是0,目的就是看看出错到底怎么处理)

     public int Division(int a,int b){ return a/b;}

     }

    2、在新建的一个aspx页面上进行如下操作:

    

     <asp:ScriptManager ID="ScriptManager1" runat="server">

          <Services>//这里注意,要添加一个web服务引用,这样就可以在页面中使用服务函数了。

                   <asp:ServiceReference Path="~/ErrorHand.asmx" />

          </Services>

     </asp:ScriptManager>

     <input type="button" value="Click me" onclick="division(8,0)" />  //插入一个按钮,它触发division函数,下面我们看看脚本division函数如何调用服务端的Division服务函数。(8除以0)

     <script type="text/javascript" language="javascript">//定义脚本

            function division(a, b) { ErrorHand.Division(a, b, getSucceded, failed); }  //看到ErrorHang了吧,就是我们定义的WEB服务类,包含有Division函数,就是我们第1步定义的服务函数。failed是出错是的回调函数,就是Division出错是要执行的函数。

            function failed(error)     //执行回调函数,error参数是执行Division函数出错时返回的WebServiceError对象

           { 

                   var message = String.format("TimeOut:{0}\nMessage:{1}\nExceptionType:{2}\nStackTrace:{3}", error.get_timedOut(), error.get_message(), error.get_exceptionType(), error.get_stackTrace());   //格式化显示出错信息,这里format方法大家应该比较熟悉,error对象内建的方法,大家通过英文也能读的懂,就不在这里赘述。

                   alert(message);//显示信息。

          }

           function getSucceded(result)

          {   //如果正确时,显示从服务中调用的结果。

                  alert(result);

          }

     </script>

     通过上面的简单示例,和大家探讨了在asp.net 客户端中调用web服务出错时的处理方法,希望对大家能有帮助。

  作者 dizsong

补充:Web开发 , ASP.Net ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,