<%@ 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);
}
}