asp.net ajax異常處理

來源:互聯網
上載者:User

msdn官方樣本:http://msdn.microsoft.com/zh-cn/library/bb398934%28v=VS.90%29.aspx

總的來說,

1,註冊ScriptManager的AsyncPostBackError事件,並在伺服器實現它,並拋出被處理過的異常(根據是否為null,可能需要拋出e.Exception或e.Exception.innerException)

2,用戶端用JS來響應,Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);添加處理常式

3,實現EndRequestHandler,錯誤資訊基本在第二個參數"args“裡面,

4,此時已經完成,由於網上沒搜到現成文檔(有的話請留言),這個args裡面到底有什麼經過我的枚舉,暫列如下

內容比較多,我還是先把枚舉的方法寫出來吧:

註:下面內容是臨時寫的,並沒有用到遞迴,也就是說,可能結果還不是完整的,有興趣的可以自己拿去改造

但我們一般用到的,基本上都在了

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);function EndRequestHandler(sender, args) {    //if (args.get_error() != undefined) {alert(args.get_error().message.replace(/.*Exception:/,'')); args.set_errorHandled(true);  }    if (args.get_error() != undefined) {        var members = 'The \'args\' members are:\n\n';        for (var i in args) {            members += '\t' + i;            var ai = eval("args." + i);            if (typeof ai == "function") {                try {                    members += "()";                    ai = eval("args." + i+"()");                } catch (err) {                    members += " not implement \n";                    continue;                }            }            members += '\n';            if (typeof ai == "string") continue;            for (var t in ai) {                members += '\t\t' + t;                if (typeof ai == "function")                    var ait = eval("args." + i + "()." + t);                else                    var ait = eval("args." + i + "." + t);                if (typeof ait == "function") {                    try {                        members += "()";                        ait = eval("args." + i + "." + t + "()");                    } catch (err) {                        members += " not implement \n";                        continue;                    }                }                members += "\n";                if (typeof ait == "string") continue;                for (var m in ait) {                    members += '\t\t\t' + m + '\n';                }            }        }        document.write("<textarea style='width:1000px; height:600px;'>"+members+"</textarea>");//members如果顯示請自行處理        args.set_errorHandled(true);     }}

結果:

The 'args' members are:_errorHandled_errormessagenamehttpStatusCodeformatlocaleFormat_toFormattedStringstackfileNamelineNumberformatlocaleFormat_toFormattedStringpopStackFrame()_dataItems_response_webRequest_url_headers_body_userContext_httpVerb_executor_invokeCalled_timeout_eventsadd_completedremove_completedcompleted_get_eventHandlerListget_urlset_urlget_headersget_httpVerbset_httpVerbget_bodyset_bodyget_userContextset_userContextget_executorset_executorget_timeoutset_timeoutgetResolvedUrlinvokeconstructor_resultObject_xmlHttpRequestdispatchEventremoveEventListeneronreadystatechangeopenreadyStatesetRequestHeadersendstatusresponseTextchannelresponseXMLstatusTextabortgetAllResponseHeadersgetResponseHeadersendAsBinaryoverrideMimeTypemultipartmozBackgroundRequestwithCredentialsuploadonuploadprogressonabortonerroronloadonloadstartonprogressgetInterface_responseAvailable_timedOut_timer_aborted_started_onReadyStateChange()_clearTimer()_onTimeout()get_timedOut()get_started()get_responseAvailable()get_aborted()executeRequest() not implement getResponseHeader() not implement getAllResponseHeaders() not implement get_responseData() not implement get_statusCode() not implement get_statusText() not implement get_xml() not implement abort()constructor()get_webRequest()_set_webRequest()get_object() not implement get_dataItems()get_error()messagenamehttpStatusCodestackfileNamelineNumberpopStackFrameget_errorHandled()set_errorHandled() not implement get_response()_webRequest_resultObject_xmlHttpRequest_responseAvailable_timedOut_timer_aborted_started_onReadyStateChange_clearTimer_onTimeoutget_timedOutget_startedget_responseAvailableget_abortedexecuteRequestgetResponseHeadergetAllResponseHeadersget_responseDataget_statusCodeget_statusTextget_xmlabortconstructor()callBaseMethodgetBaseMethodgetBaseTypegetInterfacesgetNameimplementsInterfaceinheritsFrominitializeBaseisImplementedByisInstanceOfTyperegisterClassregisterInterfaceresolveInheritanceregisterEnumget_webRequest_set_webRequestget_objectconstructor() not implement 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.