上禮拜為了寫一個小小的測試程式,必須要實際佈署到 IIS 才能驗證功能是否正確,
所以第一次嘗試在 Win7 Beta (x64) 上設定 IIS7,沒想到不小心就搞了一個多小時…
要啟用 IIS7,(從 Vista 之後)第一步就是從 Control Panel 中的
「Programs and Features」中執行「Turn Windows features on or off」,
在我啟用 IIS7 之後,就開啟 browser 瀏覽到我的測試頁面,結果出現下面這個錯誤:
hmm … 仔細的看了一下我的 web.config,預設是不會有 <httpErrors /> 這個設定的,
所以應該不是我或者 VS2008 手賤亂改設定造成的問題。
(有趣的是,我只是要瀏覽 .htm 網頁,還不是執行 .aspx 網頁哦)
雖然受到了小小的驚嚇,但是由於 IIS7 提供了非常豐富的錯誤描述資訊,
所以我想這也沒什麼了不起的,想必 Google 一下很快就會有結果了吧!
果不其然, 很快的我就查到了跟我的狀況完全相符的描述:
IIS7 HTTP Errors Configuration on Lockdown
OK, 以下這段是重點:
In order to set <httpErrors /> you have to open up applicationHost.config on your server and unlock the node or specifically set the value for the site you want. I like to unlock the node and set <httpErrors /> within the web.config of my application. I find this much clearer and more isolated then having application specific settings defined within the applicationHost.config on a specific server.
這篇文章提到了 IIS7 錯誤訊息中沒有明講的「applicationHost.config」這個關鍵檔案,
於是繼續搜尋看看這個檔案到底位置在哪,要如何修改:Editing Applicationhost.config on 64 bit Win 2008,嗯,跟我的環境蠻合的,那就仔細讀一下內容吧!
稍微看了一下,這個檔案應該位於在「c:\windows\system32\inetsvr\config\applicationhost.config」,但是正如這篇文章所說,我的 UltraEdit 和 VS2008 顯然都是 32bit application,根本無法開啟這個檔案!(幸好我沒有改內建的 Windows Explorer,所以還看的到檔案)
於是乎,我依照作者的建議,用萬能的 notepad 來開啟 applicationhost.config,
鏘鏘鏘鏘!檔案順利打開了,但是 <httpErrors /> 區塊的設定如下:
<section name="httpErrors" overrideModeDefault="Allow" />
所以完全就是可以允許每個 web application 隨意亂改 httpErrors 的處理方式嘛!
那麼揪~~~~竟是為什麼我會收到 HTTP Error 500.19 呢?
按照過去的經驗,通常會出現這種好像鬼打牆的靈異現象,很可能是因為某些最基礎(或者說底層)的環境設定不正確,導致系統丟出這種沒頭沒腦的錯誤(仔細看一下上圖,Config Source 指出的區塊根本就和 <httpErrors /> 無關,如果繼續往 <httpErrors /> 這條死胡同裡面鑽,那天就不用睡覺了),於是乎我開始尋找 IIS7 的初始設定有沒有什麼要特別注意的地方,結果無意間看到一篇讓我靈機一動的文章:Server Error HTTP Error 404.3 Not Found,之前在 Vista 上設定 IIS7 的時候也看到這篇,看到 screenshot 我才想到,我忘記設定 Application Development Features 了!
在第一次 turn on IIS7 的時候,要特別注意以下設定:
(根據這次實驗,完全不啟用 Application Development Featues 的話,連靜態 html 網頁都開不起來)
設定完成後,在 IIS7 的 Handler Mappings 中可以看到以下內容:
後來我又實驗了一下,把 Application Development Features 關掉的話,Handler Mappings 會變成這樣(沒有 .aspx、.asmx mappings):
此時去瀏覽網頁又會出現 HTTP Error 500.19,所以這個謎的真相就是這樣 … Orz
印象中 IIS6 有個設定叫做 Web Service Extensions,有時候 ASP.NET v2.0.50727 的 mapping 消失的時候,也會出現無法處理 ASP.NET 2.0 網頁 request 的狀況,
但是丟出的錯誤訊息是很明確的(忘記是啥了@@)。IIS7 在這種狀況下居然丟出一個毫不相干的錯誤訊息,反而變成很不 friendly 了 …
(不過也只有像我一樣一開始腦殘忘記設定 Application Development Featurs 的人才會感受到這種痛苦就是了 .. Orz 太信任 IIS7 的錯誤訊息也不一定是件好事…)
訂閱:
張貼留言 (Atom)
Google Spreadsheet 裡用規則運算式
最近因為工作關係,遇到要用 Google Form 及 Google Sheet 所以研究了 Google Sheet 裡的一些 function 怎麼用 首先,分享一下如何在 Google Sheet 裡用規則運算 :D
-
今天坎尼去上課老師講了一題很有趣的題目 所以回到家坎尼就順手試驗了一下 I. XOR (exclusive OR) XOR 是邏輯運算子之一,定義為: 當兩數的值不同才為 true,相同則為 false 其他相關說明可以參考 維基百科:XOR II. 程式 以往的做法會宣...
-
好久沒開 Chart Control 議題了 剛好前陣子 Codeplex 出現可以輕鬆建立 Excel 檔案的 Library- NPOI 於是坎尼想說研究一下,看能不能把 Chart Control 匯出圖片到 Excel 中 沒想到只花了不到1小時就研究...
-
上個週末打開一個影片檔,發現字幕檔是中英文混合的,造成字幕吃掉畫面很大的空間, 打開字幕檔一看,果然每一段時間都有先英文後中文的字幕: 因此我想要自己作成「只有中文」&「只有英文」兩個字幕檔,但這個檔案有6418 行,如果要手動一行一行的刪除...
2 則留言:
我轉貼了你的文章。
希望得到你的同意。
如果不同意我會立刻把連結拿掉。
因為我對CC不是很熟。
感謝你的文章。
我的文章
http://www.dotblogs.com.tw/maxi/archive/2010/01/21/13194.aspx
老實說我對 CC 也沒有深入去了解,但我不介意文章被轉錄 ^^ 希望可以解答一些疑惑,節省大家的時間 :)
張貼留言