作者:Dflying Chenhttp://dflying.cnblogs.com/

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

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

}

Atlas产生的JavaScript mash up将会有如下的签名:
在ASP.NET Atlas中调用Web Service——处理错误,超时以及响应用户的取消操作ComplexWebService.BadMethod(
在ASP.NET Atlas中调用Web Service——处理错误,超时以及响应用户的取消操作    delayTime, 
在ASP.NET Atlas中调用Web Service——处理错误,超时以及响应用户的取消操作    throwException, 
在ASP.NET Atlas中调用Web Service——处理错误,超时以及响应用户的取消操作    onMethodComplete, 
在ASP.NET Atlas中调用Web Service——处理错误,超时以及响应用户的取消操作    onMethodTimeout, 
在ASP.NET Atlas中调用Web Service——处理错误,超时以及响应用户的取消操作    onMethodError, 
在ASP.NET Atlas中调用Web Service——处理错误,超时以及响应用户的取消操作    onMethodAborted,
在ASP.NET Atlas中调用Web Service——处理错误,超时以及响应用户的取消操作    userContext,
在ASP.NET Atlas中调用Web Service——处理错误,超时以及响应用户的取消操作    timeoutInterval,
在ASP.NET Atlas中调用Web Service——处理错误,超时以及响应用户的取消操作    priority,
在ASP.NET Atlas中调用Web Service——处理错误,超时以及响应用户的取消操作    useGetMethod,
在ASP.NET Atlas中调用Web Service——处理错误,超时以及响应用户的取消操作);

注意到Web Method中的两个参数按照顺序作为了JavaScript方法的前两个参数,接下来还有一些额外的参数:

  1. onMethodComplete:指定当该方法顺利完成并返回时被触发的回调函数名,一般情况下您应该总是指定这个方法。
  2. onMethodTimeout,:指定当该方法执行超时时被触发的函数名。
  3. onMethodError:指定当该方法在执行中遇到异常时被触发的函数名。
  4. onMethodAborted:制定当该方法执行期间被用户取消时被触发的函数名。
  5. userContext:用户上下文对象,在上述四个函数中都可以访问到。
  6. timeoutInterval:设定超时的时间限制,单位毫秒,默认值好像为90000。一般情况下不需要更改。
  7. priority:设定该方法的执行优先级。该优先级将被用于批量AJAX操作(将在下一篇中提到)中。
  8. useGetMethod:是否采用HTTP GET来发送请求,默认为false

上述这八个属性的顺序必须按照指定的来。但有时候我们只需要指定顺序靠后的某个参数,就不得不同时书写前面的参数。为此,Atlas特意为我们提供了另一种调用方法,将上述八个参数以dictionary的形式传给该方法。例如当我们只需要onMethodCompletetimeoutInterval参数时,可以这样写:

在ASP.NET Atlas中调用Web Service——处理错误,超时以及响应用户的取消操作ComplexWebService.BadMethod(
在ASP.NET Atlas中调用Web Service——处理错误,超时以及响应用户的取消操作    delayTime, 
在ASP.NET Atlas中调用Web Service——处理错误,超时以及响应用户的取消操作    throwException, 
);

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

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

在ASP.NET Atlas中调用Web Service——处理错误,超时以及响应用户的取消操作using System;
在ASP.NET Atlas中调用Web Service——处理错误,超时以及响应用户的取消操作
using System.Web;
在ASP.NET Atlas中调用Web Service——处理错误,超时以及响应用户的取消操作
using System.Web.Services;
在ASP.NET Atlas中调用Web Service——处理错误,超时以及响应用户的取消操作
using System.Web.Services.Protocols;
在ASP.NET Atlas中调用Web Service——处理错误,超时以及响应用户的取消操作
在ASP.NET Atlas中调用Web Service——处理错误,超时以及响应用户的取消操作[WebService(Namespace 
= "http://tempuri.org/")]
在ASP.NET Atlas中调用Web Service——处理错误,超时以及响应用户的取消操作[WebServiceBinding(ConformsTo 
= WsiProfiles.BasicProfile1_1)]
}

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

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

在ASP.NET Atlas中调用Web Service——处理错误,超时以及响应用户的取消操作<atlas:ScriptManager ID="ScriptManager1" runat="server">
在ASP.NET Atlas中调用Web Service——处理错误,超时以及响应用户的取消操作    
<Services>
在ASP.NET Atlas中调用Web Service——处理错误,超时以及响应用户的取消操作        
<atlas:ServiceReference Path="ComplexWebService.asmx" />
在ASP.NET Atlas中调用Web Service——处理错误,超时以及响应用户的取消操作    
</Services>
在ASP.NET Atlas中调用Web Service——处理错误,超时以及响应用户的取消操作
</atlas:ScriptManager>

ASPX页面上添加四个按钮,用来触发下述四种情况:
在ASP.NET Atlas中调用Web Service——处理错误,超时以及响应用户的取消操作<div>
在ASP.NET Atlas中调用Web Service——处理错误,超时以及响应用户的取消操作    This is a BAD method, it can:
<br />
在ASP.NET Atlas中调用Web Service——处理错误,超时以及响应用户的取消操作    
<input id="btnWorkFine" type="button" value="work fine" onclick="return btnWorkFine_onclick()" />
在ASP.NET Atlas中调用Web Service——处理错误,超时以及响应用户的取消操作    
<input id="btnTimeOut" type="button" value="timeout" onclick="return btnTimeOut_onclick()" />
在ASP.NET Atlas中调用Web Service——处理错误,超时以及响应用户的取消操作    
<input id="btnThrowException" type="button" value="throw an exception" onclick="return btnThrowException_onclick()" />
在ASP.NET Atlas中调用Web Service——处理错误,超时以及响应用户的取消操作    
<input id="btnCanceld" type="button" value="get canceled" onclick="return btnCanceld_onclick()" />
在ASP.NET Atlas中调用Web Service——处理错误,超时以及响应用户的取消操作
</div>

正常完成,我们指定服务器端没有延时也没有异常,并给出了一个合理的(10秒)的超时时间:

}

超时,指定服务器端延时3秒,但超时时间设置成为仅1秒:

}

异常,制定服务器端掷出异常。注意回调函数中可以使用response参数得到详细的错误信息:

}

用户取消,与正常完成类似,不过在发出请求后立刻使用request.abort()取消了操作:

}

截图如下,正常完成:
在ASP.NET Atlas中调用Web Service——处理错误,超时以及响应用户的取消操作

超时:
在ASP.NET Atlas中调用Web Service——处理错误,超时以及响应用户的取消操作

异常:
在ASP.NET Atlas中调用Web Service——处理错误,超时以及响应用户的取消操作

用户取消:
在ASP.NET Atlas中调用Web Service——处理错误,超时以及响应用户的取消操作

该示例程序可以在此下载:https://files.cnblogs.com/dflying/ControlTheWebService.zip

相关文章:

  • 2021-12-01
  • 2021-10-12
  • 2021-10-27
  • 2021-10-18
  • 2021-12-22
  • 2022-12-23
  • 2021-07-29
  • 2021-12-13
猜你喜欢
  • 2021-12-13
  • 2021-11-20
  • 2022-02-17
  • 2021-08-14
相关资源
相似解决方案