[ASP.NET]HTTP 錯誤 500.19 - Internal Server Error

[ASP.NET]HTTP 錯誤 500.19 - Internal Server Error

前言

今天在測試頁面的時候,突然發現一些在MasterPage上的相對路徑是使用../../的方式,
結果目錄結構深度不一樣時,會導致頁面找不到相關資源。

要改用站台名字從根目錄找下來的時候,發現我的IIS站台,是直接設定在主機名稱底下。

原本還以為只要虛擬目錄對的到就好,結果才知道要新增『應用程式』,才會有站台名字…
(從XP直接跳Windows 7,IIS真的變超多的…)

Anyway…設定完後,瀏覽,恩,很好!頁面出來了,站台名稱也OK了。

接著去VS2008裡面,把原本使用檔案系統的站台,改成用IIS的站台。

瞎咪!還要額外裝IIS元件?!
要裝IIS6相容跟Windows驗證…

那就裝吧,

iis_component

裝完之後,VS果然可以開IIS的站台了,但是悲劇發生了…

 

HTTP 錯誤 500.19 - Internal Server Error

跑頁面都出現『HTTP 錯誤 500.19 - Internal Server Error』這個錯誤,錯誤畫面如下:

error

看上面的錯誤訊息,似乎是錯在web.config檔的設定,與啥WebService的設定問題。
再看看web.cofing上,<system.webServer>區段上,寫著

    <!--
        需要 system.webServer 區段才能在 Internet Information Services 7.0 下
        執行 ASP.NET AJAX。舊版的 IIS 則不需要。
    -->

加上我對IIS7的設定實在很不熟,
所以我猜測問題的發生原因可能是以下幾點:

  1. 原本VS沒加入IIS網站,一切都是正常的,要加IIS網站,要裝啥IIS6相容設定元件,所以可能是IIS7設定的問題。
  2. IIS6設定相容性,又出錯在web.config?難道是<system.webServer>那一段要改?
  3. 啥allowOverride跟啥”Deny”的設定?這完全沒見過,不過可能也是錯誤的原因
  4. 權限設定的問題,不過我有確定該權限有開給ASP.NET偵錯了…


錯誤資訊的頁面上還有個連結,講著這樣的問題可能的原因與解決方案。
請參考:http://support.microsoft.com/kb/942055/
看起來也都是config上的毛病...
 

Solution

在IIS的設定、權限的設定與web.config的設定繞了好久之後,
突然想到…靠!我有額外新裝了IIS的部分元件,好像又有看到啥警告訊息,要求什麼『註冊』的…

該不會問題跟之前先裝VS,才裝IIS,要重新註冊ASP.NET一樣吧…

果不其所以然,錯誤資訊上的區塊,都跟我的問題無關。

NonError

打開『命令提示視窗』,到『C:\Windows\Microsoft.NET\Framework64\v2.0.50727』底下,輸入『aspnet_regiis -i』重新註冊ASP.NET就可以了…

cmd

 

 

結論

繞了一大圈,卻一時忘了之前的經驗…

藉著這一篇文章,希望自己牢牢記住這次的經驗,也希望可以幫助其他人更快地找到這問題的解決方式。

對敏捷開發有興趣的朋友,可以參考我的粉絲專頁:91敏捷開發之路

對 TDD 課程有興趣的朋友,課程內容、大綱與學員心得,可以參考 skilltree 的公開課程:自動測試與 TDD 實務開發

若需要聯絡我,可以透過粉絲專頁私訊或是側欄的關於我。