asp.net ajax異常處理

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

    }

    

}









發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章