Sign in with Microsoft
Sign in or create an account.
Hello,
Select a different account.
You have multiple accounts
Choose the account you want to sign in with.

關於作者:

本文由微軟最有價值專 MVP 高榮章 提供。微軟十分感謝 MVP 主動地將他們的經驗與上百萬名其他技術使用者交流。MVP 高榮章同時也將此篇文章放在他的部落格內,歡迎您按 此處  瀏覽 MVP 高榮章更多的技術文章、經驗分享與觀點。

問題的來龍去脈

事情是這樣的,因為要進行主機轉移,這兩台主機分別為 A 主機和 B 主機,所安裝的 Framework 都是 1.1,轉移時不小心將 A 主機 C:\Inetpub\wwwroot\aspnet_client\system_web\1_1_4322 下的檔案複製到另外 B 主機。轉移過去後,發現 B 主機的 ASPX 的程式,點 Submit 後不會觸發 postback 的J avascript。

問題的發生原因

追蹤後發現兩台主機的 .net Framw work 版號不同,因此在 postbac 所呼叫的 function 是不同的,以下明顯看出 A 和 B 主機裡的 WebUIValidation.js 內容並不同:
1. A 主機

//Main.aspx(FW:1.1.4322.573)
function ValidatorOnSubmit() {
if (Page_ValidationActive) {
ValidatorCommonOnSubmit();
}
}
//../1_1_4322/WebUIValidation.js
function ValidatorCommonOnSubmit() {
event.returnValue = !Page_BlockSubmit;
Page_BlockSubmit = false;
}

2. B 主機

//Main.aspx (FW: 1.1.4322.2443)
function ValidatorOnSubmit() {
if (Page_ValidationActive) {
return ValidatorCommonOnSubmit();
}
return true;
}
//../1_1_4322/WebUIValidation.js
function ValidatorCommonOnSubmit() {
var result = !Page_BlockSubmit;
Page_BlockSubmit = false;
event.returnValue = result;
return result;
}

3. B 主機(複製了 A 主機的 WebUIValidation.js 後)

//main.aspx
function ValidatorOnSubmit() {
if (Page_ValidationActive) {
return ValidatorCommonOnSubmit();//這邊需要return value
}
return true;
}
//WebUIValidation.js
//但這裡卻沒return值
function ValidatorCommonOnSubmit() {
event.returnValue = !Page_BlockSubmit;
Page_BlockSubmit = false;
}


以上(3)是我們將 A 主機的 WebUIValidation.js 複製到 B 主機後的內容,B 主機的 main.aspx 進行submit 後呼叫 ValidatorCommonOnSubmit,ValidatorCommonOnSubmit 會 return ValidatorCommonOnSubmit(),偏偏在 WebUIValidation.js 被蓋後, ValidatorCommonOnSubmit,不再 return 值,便造成 ValidatorOnSubmit 裡 return ValidatorCommonOnSubmit(),變成 return 'undifined',javascript 執行到這邊便會因錯誤而停住,當然無法往下 postback 回去囉。

問題的解決方法

  1. 在 B 主機執行以下指令,修復 .net framework: 

    "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet_regiis.exe" –i

  2. 然後再用 "net start w3svc" 重啟網站服務就 OK 了。

請讓我們知道

還滿意我們寫的內容嗎?無論您是遇到了以下任何一種情況:
「太好了!問題解決了。」
「問題沒有解決,我有更好的建議。」
都歡迎您利用本篇文章底部的意見調查表,寫下您寶貴的意見。也期待您的鼓勵,讓我們為您創造更多實用的技術文章。

Need more help?

擴展您的技能

探索訓練 >

優先取得新功能

加入 MICROSOFT 365 測試人員 >

Was this information helpful?

How satisfied are you with the translation quality?
What affected your experience?

Thank you for your feedback!

×