關於作者:

本文由微軟最有價值專 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?

Expand your skills
Explore Training
Get new features first
Join Microsoft Insiders

Was this information helpful?

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

Thank you for your feedback!

×