remote script文檔載自微軟)(七)

來源:互聯網
上載者:User

文檔: 檢查錯誤
當您在伺服器指令碼中用 remote scripting 調用方法時,可能會遇到多種錯誤,包括語法錯誤和已耗用時間錯誤,以及調用 remote scripting 方法時的錯誤。remote scripting 調用機制向您提供了獲知調用過程中所出現錯誤資訊的途徑。

錯誤處理程式根據您是進行同步或者非同步呼叫稍微有些不一樣。如果您在進行同步調用時導致錯誤,那麼 remote scripting 機制將在瀏覽器中顯示一條錯誤訊息。錯誤文字來自於調用對象的 message 屬性。有關詳細資料,請參閱如下的“Remote Scripting 調用故障診斷”。

不過,如果您產生導致一個錯誤的非同步呼叫,那麼您可以通過指定一個錯誤回呼函數捕獲該錯誤,該回呼函數的調用在很大程度上和普通回呼函數有相似之處。

捕獲非同步呼叫中產生的錯誤

您可以指定自己非同步 remote scripting 調用中的錯誤回呼函數名。由於您必須傳遞該回呼函數的函數指標,因此對於非同步方法呼叫調用來說,您必須使用 javascript。如果您已經建立了對伺服器頁的對象引用,那麼可以用第一個文法樣本。否則可以用第二個文法樣本。
callObject = ASPObject.methodName(p1, p2[,...],
callbackFunction, errorCallbackFunction, context)

callobject = RSExecute(url, methodName, p1, p2[,...],
callbackFunction, errorCallbackFunction, context)

有關產生對伺服器方法非同步呼叫的詳細資料,請參閱非同步呼叫 Remote Scripting 方法。

不管您進行同步還是非同步呼叫,都可以得到關於錯誤條件的資訊,方法是測試調用對象的屬性。如果使用者指定了錯誤回呼函數,那麼調用對象就被作為參數傳遞,就象普通回呼函數參數傳遞一樣。特別是下面的屬性提供了錯誤資訊:

status 如果遠程調用失敗則包含 -1。

data 包含伺服器返回的 XML 格式的粗資訊。這是調試的最好資訊源,因為它包含了錯誤訊息的完整文本以及伺服器產生的其他訊息。

message 包含 remote scripting 代理過程產生的錯誤訊息資訊(如果有的話)。message 中的錯誤訊息不必要和 data 屬性中的一樣。例如,如果 ASP 頁包含一條語法錯誤,那麼關於該錯誤的詳細訊息將出現在 data 屬性中,但訊息屬性將只包含這樣一條訊息──它指示使用者不能調用 ASP 頁上的方法。
下面的指令碼樣本了客戶指令碼中的一個錯誤回呼函數。第一個指令碼產生一個 remote scripting 調用,並指明錯誤回呼函數。第二個指令碼是錯誤回呼函數本身。錯誤回呼函數並不顯式地對調用對象 status 屬性值進行測試,因為該函數僅在調用失敗時才被調用。

<SCRIPT LANGUAGE="javascript" for="btnSquare" event="onclick">
rsMath = RSGetASPObject("rsadd.asp");
number1 = txt1.value;
context = "squaring";
co = rsMath.square(number1,showResults,showErrors,context);

function showErrors(co){
// 轉儲粗資料
msg = "The raw data returned by the remote method call is "
msg = msg + co.data
alert(msg);
// 顯示友好資訊
msg = "The following error occurred during the "
msg = msg + co.context
msg = msg + " remote scripting call:\n"
msg = msg + co.message
alert(msg);
}
</SCRIPT>

Remote Scripting 調用故障診斷
找到某個 remote scripting 調用中的確切錯誤源並不總是一件容易的事情,因為 remote scripting 不僅涉及到客戶而且涉及到伺服器上的多個檔案。不過,某些類型的錯誤屬於一般性錯誤,而且容易發現。另外,使用者可以用 remote scripting 機制的錯誤捕獲程式獲得調用過程中所出現錯誤的詳細資料。

在某些情況下,使用者不能用 remote scripting 進行任何處理,因為尚未對之進行正確的初始化。下表列出了典型的初始化錯誤及其可能的出錯緣由。

癥狀 可能錯因
Remote scripting 不起作用;客戶頁源僅包含 <APPLET> 標記。 RSEnableRemoteScripting
調用不在文檔主體內。請參閱使得客戶頁內的 Remote Scripting 有效。
Remote scripting 不起作用;所有調用失敗。 ASP 頁未被調用。使用 http:// 協議(而不是 file://)。
用戶端錯誤訊息,比如當試圖調用 remote scripting 方法時,出現“未定義 'MSRS' ”訊息。 試圖進行遠程調用之前,未能成功調用 RSEnableRemoteScripting 方法。
用戶端錯誤訊息“對象不支援該屬性或者方法,”特別顯示出和 .HTM 檔案不匹配的行號。 找不到代理對象 (Rsproxy.class),或者 RSEnableRemoteScripting 方法中傳遞的是無效 URL。
用戶端錯誤訊息“建立檔案的 ASP 對象失敗”。 RSGetASPObject 調用中傳遞的是無效 URL。請參閱作為對象引用 ASP 頁。

如果錯誤位於包含遠程調用方法的 ASP 頁中,或者如果錯誤出現在對某個遠程方法的調用過程中,那麼使用者可以在某個錯誤回呼函數中捕獲該錯誤,而且使用者可以從調用對象的 data 和 message 屬性中獲得關於錯誤的資訊。

下表列出了使用者可以用錯誤回呼函數捕獲的典型問題以及 message 和 data 屬性中的值。在多數情況下,message 屬性返回一般性資訊,而 data 屬性則包含關於錯誤的詳細資料。

注意 資料屬性包含一定數目的 XML 標記以及和調用有關的其他資訊。下表列出了出現在屬性值中的一個字串。

問題 訊息值 資料值
RSExecute 方法中 ASP 頁的無效 URL。請參閱同步調用 Remote Scripting 方法和非同步呼叫 Remote Scripting 方法 不同的,包括使用者試圖調用的頁名。 (null)
ASP 檔案到 Rs.asp 的路徑錯誤。請參閱使得伺服器頁中的 Remote Scripting 有效。 “調用的頁不支援 remote scripting。” “未找到包括檔案。”
ASP 檔案中的文法或者已耗用時間錯誤。 “調用的頁不支援 remote scripting。” 和錯誤有關的細節,包括行號。
試圖調用不存在的方法。 “不是公用函數。” “不是公用函數。”
ASP 建構函式引用了未出現在 ASP 檔案中的函數。請參閱使得伺服器頁中的 Remote Scripting 有效 “調用的頁不支援 remote scripting。” “functionName未定義。”

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.