151-3895-5886

在ASP.NET Atlas中调用Web Service—处理错误,超时以及响应用户

2019年09月11日 维尼网络

  作者:Dflying Chen()
  在本系列的上一篇(在ASP.NET Atlas中调用Web Service——介绍及简单应用)中,我们熟悉了Atlas中调用Web Service的最基础办法,但是在实际开发中,仅仅发出请求并等待返回结果是不够的,我们大都需要考虑对错误超时等的处理,也要允许用户取消操作。幸运的是,Atlas对Web Service中的Web Method的封装也充分考虑到了这些需求。

  让我们举一个Web Method的例子来说明,例如,对于如下的Web Method:

  public class ComplexWebService  : System.Web.Services.WebService {

      [WebMethod]
      public string BadMethod(int delayTime, bool throwException)
      {
          // something something
      }
  }

   

  Atlas产生的JavaScript mash up将会有如下的签名: ComplexWebService.BadMethod(
      delayTime,
      throwException,
      onMethodComplete,
      onMethodTimeout,
      onMethodError,
      onMethodAborted,
      userContext,
      timeoutInterval,
      priority,
      useGetMethod,
  );
  注意到Web Method中的两个参数按照顺序作为了JavaScript办法的前两个参数,接下来还有一些额外的参数:

  onMethodComplete:指定当该办法顺利完成并返回时被触发的回调函数名,一般情况下您需要总是指定这个办法。
  onMethodTimeout,:指定当该办法执行超时时被触发的函数名。
  onMethodError:指定当该办法在执行中遇到异常时被触发的函数名。
  onMethodAborted:制定当该办法执行期间被用户取消时被触发的函数名。
  userContext:用户上下文对象,在上述四个函数中都可以访问到。
  timeoutInterval:设定超时的时间限制,单位毫秒,默认值好像为90000。一般情况下不需要更改。
  priority:设定该办法的执行优先级。该优先级将被用于批量AJAX操作(将在下一篇中提到)中。
  useGetMethod:是否采用HTTP GET来发送请求,默认为false。
  上述这八个属性的顺序必须按照指定的来。但有时候我们只需要指定顺序靠后的某个参数,就不得不同时书写前面的参数。为此,Atlas特意为我们提供了另一种调用办法,将上述八个参数以dictionary的形式传给该办法。例如当我们只需要onMethodComplete和timeoutInterval参数时,可以这样写:

  ComplexWebService.BadMethod(
      delayTime,
      throwException,
      {
          onMethodComplete: completeHandler,
          timeoutInterval: 10000
      }
  );

  OK,让我们通过一个实例看看在一般情况下上述四种回调函数(onMethodComplete,onMethodTimeout,onMethodError和onMethodAborted)中的常见处理。

  首先让我们完成开头部分的Web Service办法:

  using System;
  using System.Web;
  using System.Web.Services;
  using System.Web.Services.Protocols;

  [WebService(Namespace = "http://tempuri.org/")]
  [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
  public class ComplexWebService  : System.Web.Services.WebService {

      [WebMethod]
      public string BadMethod(int delayTime, bool throwException)
      {
          if (throwException)
          {
              throw new Exception("Sorry, I do not like to do this!");
          }
          System.Threading.Thread.Sleep(delayTime);
          return "Done!";
      }
  }

  可以看到该办法有两个参数:delayTime指定该办法的延时,throwException指定该办法是否掷出异常。通过控制这两个参数以及调用时的timeoutInterval参数,我们就可以模拟完成,超时以及异常的三种情况。

  然后,在页面中加入ScriptManager并添加对这个Web Service的引用:

  <atlas:ScriptManager runat="server">
      <Services>
          <atlas:ServiceReference Path="ComplexWebService.asmx" />
      </Services>
  </atlas:ScriptManager>

   

阅读更多内容
上一篇asp.net 2.0中动态修改页面标题
下一篇ASP.NET里常用的JS

声明:本页内容由郑州维尼网络收集编辑所得,所有资料仅供用户参考,转载请保留此链接http://www.zzwn.cn/cms/1873.html

本文标签: ASP.NET 调用 错误 处理 Atlas Service

 

相关资讯 Related Info
相关分类 News Classification
解决方案 Solutions
相关热点 Hot spot
使用CSS2.1的多重背景效果和边框效 使用CSS2.1的多重背景效果和边框效
  1. 我们的承诺
  2. 我们的实力
  3. 我们的未来
郑州做网站咨询电话 建站咨询

151-3895-5886

网站备案安全放心网站

地址:郑州市上街区和昌都汇广场 / 电话:151-3895-5886
客服QQ: 7758021 / 邮箱:admin@zzwn.cn
Copyright © 2010-2019 郑州融科网络 版权所有