close

繼上回將開發好的程式碼上線到網頁伺服器之後,
http://Jerry5217.pixnet.net/blog/post/246239836

這次要整合在另一部已經存在許多功能頁面的伺服器中,這次的伺服器主機是Windows Server 2008內建IIS 7.0,初次見面還真是有點兒陌生啊~
還是老手法將開發編譯無誤的程式碼,整個資料夾複製到伺服器中然後用IIS的路徑去指它,理論上就是網頁的網址路徑正確應該就可以運行了吧!理論歸理論當然不會這麼順遂不然就不叫"微軟"了,"微"就是細節中的魔鬼"軟"就是猜不透摸不著,搞上一整天但有可能休息撒泡尿回來就突然通了(=_=)|||

這次在IIS7上面遇到的錯誤是在Web.Config裡面重複定義了Section,由於這次我開發的程式碼是要放入正在運行的網頁伺服器中,所以在其它資料夾只要是用Visual Studio開發的功能,不論是用何種語法工具都會有Web.Config這個檔案,所以很容易會有重複定義的錯誤發生,我特別在同一個資料夾路徑下用記事本寫了一個簡單的Html網頁,檔名是Index1.htm另一個用C#寫的簡單首頁是Default.aspx,在用戶端(Client)開啟瀏覽器執行的時候神奇的事情發生了!

用Google Chrome瀏覽器分別執行後的結果是一樣的錯誤訊息:

0_Chrome.png

但是用Microsoft IE瀏覽器單純的Html竟然可以正常解譯出來!

0_IE.png

但是我的重點是要正確執行Default.aspx這個檔案,所以依照頁面的錯誤訊息我把重複定義的部分先標"註解"起來:

1.png

重新編譯後Google Chorme可以正確執行html的網頁,但是C#開發的ASP.Net卻出現亂碼了!

1_Chrome.png

而Microsoft IE依舊可以正確執行html的網頁,但是ASP.Net網頁直接告訴你無法顯示...

1_IE.png

這下好玩了!完全沒有錯誤訊息就等於沒有解決的方向及頭緒,唯一的線索是之前在Web.Config的Section發生重複定義的時候,Chorme瀏覽器連單純的Html碼都無法解譯,所以我覺得IIS7及Chorme應該是比較嚴謹並且安全性是比較高的,

當二種瀏覽器都可以執行單純的Html網頁卻同時無法解譯ASP.Net的網頁時,我突然想到以前初學ASP.Net的時候微軟為了推行這個新的開發工具,硬是在每台電腦的Windows Update中包了一個項目叫做.Net Framework,所以無法解譯ASP.Net的現象一定是跟.Net Framework有關!

花了一個下午的時間爬文,試了許多前輩們的經驗及方法後...首先把IIS7的.Net Framework 4.0啟動...(真是傻眼!已經包在裡面,幹嘛不預設就啟動啊!)

找到IIS設定中"ISAPI及CGI限制"的功能選項,

2.png

將ASP.Net v4.0啟動變成"允許"...(抓到兇手了!沒有它怎麼解譯啊!)
Visual Studio 2008內建預設是用.Net Framework 3.5開發...

4.png

原本以為這樣就搞定了,興高采烈的回到Client端開啟網頁連線,接果竟然一樣無法正常執行!

回到Server端再檢查一次,還回去原本IIS6的那台主機看一下設定,原來是自己忘了一個步驟!忘了將需要運行.Net Framework的資料夾進行應用程式的設定...

有時候真的不得不佩服微軟!
常常自以為新鮮改版也改了操作介面,原本在舊版操作很順的步驟到新版都還要再重新適應一下,微軟視窗作業系統就是最好的例子...ヽ(`Д´)ノ

5.png

所以在使用ASP.Net開發的網頁資料夾,按滑鼠右鍵選擇"轉成應用程式",選取預設的"DefaultAppPool"就是執行剛剛"允許"的.Net Framework 4.0了,

6.png

回到Client端再重新開啟網頁連線,不論是用Google Chrome或是Microsoft IE執行單純的Html網頁或是ASP.Net的網頁都正常了喔!

7.png

 

其實我一共用了3段字串來進行上述的測試,
第1個就是最簡單的Html語法的網頁,
第2個是寫在Default.aspx的"這是前端網頁的字",
第3個是寫在Default.cs的"這是後端程式碼的字",
Default.aspx的內容其實就是Html的語法:

Default.cs純粹是輸出一段文字:

當IIS在執行編譯ASP.Net所開發的網頁時,誰沒顯示出來就知道是誰解不出來了!
所以由此可知所謂的ASP(Active Service Page)網頁,是由後端程式碼來決定前端網頁該顯示什麼內容,所以上述結果會先執行顯示"這是後端程式碼的字"才後執行顯示"這是前端網頁的字"...

arrow
arrow
    文章標籤
    IIS7 HTTP錯誤
    全站熱搜

    王振權 發表在 痞客邦 留言(0) 人氣()