去年底去恆逸上了一堂 SCVMM 的課(Microsoft Official Course 6331A: Deploying and Managing Microsoft System Center Virtual Machine Manager),在實作的過程中一切都很順利,但是在我要打開 SSRS 的報表網站來檢視報表時,卻一直跳出類似「網站無法存取」的錯誤,但是老師和課堂上其他同學的系統都很正常。
接下來就是恐怖的 debug 時間,老師親自過來在我的機器上測試各種設定,從 IIS、SSRS、AD、VMM Admin Console 一路到 SCOM 都查遍了,甚至把 VMM Admin Console 和 SCOM 砍掉重裝,問題還是沒有解決。最後花了將近一個半小時,終於找出問題!原因就是在設定 IIS & SSRS 網站的時候,設定「實體路徑執行身分 (Physical Path Credentials)」時要輸入 AD 的帳密,此時如果帳密輸入錯誤,IIS 是不會跳出錯誤訊息的!!!
「實體路徑執行身分 (Physical Path Credentials)」的位置在哪裡呢?以 IIS 7.5 為例:
在每個網站的 Features View 裡面,右邊的控制面板中間可以看到「Advanced Settings」:
點進去以後,可以看到「Physical Path Credentials」這個設定值:
在接下來的設定畫面中,要把預設的「Application user (pass-through authentication)」改為「Specific user」,並在此處輸入 AD 的帳密:
問題就是出在這一步!!
在這裡雖然 Password 有 confirm 的機制,但是若連續兩次輸入錯誤(暈倒),IIS 就會接受這個錯誤的密碼,而後當網站實際上執行,以這組帳密去驗證時就會失敗,進而產生「網站無法存取」或者「存取被拒」之類的錯誤訊息了!
雖然說密碼連續兩次輸入錯誤還蠻扯的,但是若是跟我一樣習慣盲打的人,有時候用到一支鍵位配置跟平常習慣的鍵位不一樣的鍵盤時,是可能會連續兩次輸入錯的一模一樣的字串的。特別是這個欄位是密碼欄位,在畫面上看不到實際輸入的內容,因此當系統顯然沒有真的嘗試用此組帳密進行驗證,只是單純用 confirm password 的方式驗證時,就會發生這次的狀況了!
在這樣的狀況下,最好的作法就是設定完 AD 帳密以後,馬上試著打開網站看看能否正常運作,如果發現問題的話才有機會回頭檢查設定是否有誤。
後記:
雖然我只有用 IIS 7.5 來驗證,但是既然最新版的 IIS 都會有這問題,那麼舊版應該也是免不了的 ~
2011年2月5日
2009年3月8日
IIS7 未啟用 Application Development Features 會導致 HTTP Error 500.19 (The requested page cannot be accessed because the related configuration data for the page is invalid.)
上禮拜為了寫一個小小的測試程式,必須要實際佈署到 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 的錯誤訊息也不一定是件好事…)
所以第一次嘗試在 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 的錯誤訊息也不一定是件好事…)
2008年7月15日
IIS - Going Live With IIS 7.0
全文請見 Microsoft TechNet Magzine July,裡面提到的重點包括:
- 如何利用 IIS 7 同時 Host ASP.NET & PHP WebSite
- The top 10 improvements with IIS 7
- "IIS Architecture" & "Integrated and Classic Modes",說明 IIS 是如何可以做到同時 Support ASP.NET & PHP Website
訂閱:
文章 (Atom)
Google Spreadsheet 裡用規則運算式
最近因為工作關係,遇到要用 Google Form 及 Google Sheet 所以研究了 Google Sheet 裡的一些 function 怎麼用 首先,分享一下如何在 Google Sheet 裡用規則運算 :D
-
好久沒開 Chart Control 議題了 剛好前陣子 Codeplex 出現可以輕鬆建立 Excel 檔案的 Library- NPOI 於是坎尼想說研究一下,看能不能把 Chart Control 匯出圖片到 Excel 中 沒想到只花了不到1小時就研究...
-
雖然在圖片上直接按右鍵就可以另存圖片 (沒設定權限的話 不過客戶還是想要有個按鈕能讓圖片下載 所以坎尼只好再想辦法滿足客戶的需求 UI設定 首先,在畫面上準備好下載按鈕和圖表 順便設定一下樣式和內容,這部分之前講過很多次就不多談了 撰寫按鈕事件 先宣告 System.IO.Mem...
-
拖稿拖了好幾天 坎尼夢見了富檻出新連載 所以上來把欠的東西還一還 (富檻快給我畫 坎尼廢話就少講一點 直接進入 自訂分頁 Sample 首先,畫面上要有個 Gridview 這邊坎尼偷懶用了 SqlDataSource 見下圖 可以看到 Pager 已經出現了 來看一下...



