<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>ajax Exception Demo</title>
<script language="javascript" type="text/javascript">
function btnInvoke_onclick()
{
var a=$get("tbA").value;
var b=$get("tbB").value;
MathService.Divide(a,b,onSucceeded,onFailed);
//WebService的名称为MathService
}
//onSucceeded 成功调用后的回调函数
function onSucceeded(result)
{
$get("btnInvoke").value=result;
$get("result").value="";
}
//onFailed 失败时的回调函数
function onFailed(error)
{
/**ASP.NET AJAX的客户端Sys.Net.WebServiceError类型封装了异步请求服务器时可能
发的生异常,它提供了若干个只读属性,提供了对异常的详细描述.
Sys.Net.WebServiceError类型的属性主要有:
exceptionType 获取服务器异常的具体类型
message 获取详细的异常信息
statusCode 获取造成异常的HTTP响应的状态码
statckTrace 获取服务器端异常的栈跟踪信息
timeOut 获取一个布尔值,表示异常是否由网络连接超时造成的.
根据ASP.NET AJAX客户端组件的命名规范,访问属性均需要在属性名称前加上get_或set_前缀.
所以要按以下方式书写代码:
var errroMessage=errorObj.get_message();
**/
//取得异常信息
var stackTrace = error.get_stackTrace();
var message = error.get_message();
var statusCode = error.get_statusCode();
var exceptionType = error.get_exceptionType();
var timeOut = error.get_timedOut();
//显示异常信息
$get("result").innerHTML= "<strong>Stack Trace:</strong>"+stackTrace+"<br/>"+
"<strong>Service Error:</strong>"+message+"<br/>"+
"<strong>Status Code:</strong>"+statusCode+"<br/>"+
"<strong>Exception Type:</strong>"+exceptionType+"<br/>"+
"<strong>Is Timeout:</strong>"+timeOut+"<br/>";
$get("btnInvoke").value="?";
}
</script>
</head>
<body>
<form id="form1" runat="server">
<%--添加Web Service的引用--%>
<asp:ScriptManager ID="ScriptManager1" runat="server">
<Services>
<asp:ServiceReference Path="MathService.asmx" />
</Services>
</asp:ScriptManager>
<input id="tbA" type="text" style="width:40px;" />/
<input id="tbB" type="text" style="width:40px;" />=
<input id="btnInvoke" type="button" value="?" οnclick="return btnInvoke_onclick()" />
<div id="result" style="color:Red;font-weight:bold;"></div>
</form>
</body>
</html>
using System;
using System.Web;
using System.Collections;
using System.Web.Services;
using System.Web.Services.Protocols;
/// <summary>
/// MathService 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.Web.Script.Services.ScriptService]
public class MathService : System.Web.Services.WebService {
public MathService () {
//如果使用设计的组件,请取消注释以下行
//InitializeComponent();
}
[WebMethod]
//以HTTP GET的方式调用Web Service中的方法进行调用
//[System.Web.Script.Services.ScriptMethod]
[System.Web.Script.Services.ScriptMethod(UseHttpGet=true)]
public int Divide(int a,int b) {
return (int)(a/b);
}
}