前言
我想任何一個基於.NET的宮城師都會同意微軟的產品,特別是這個IIS,常常在你很恨意外的時候拋出異常來,比如在你的主要產品要升級的時候。然后你會花好多時間去找啊找,找到天荒地老。悲催!~。
此篇文章的目標主要是為了IIS 7.5 在一些情況下的解決方案。希望這些對你們有幫助。
一。 IIS 有關WCF 宿主(hosting)問題
問題描述:
如果第一次在IIS 7.5部署WCF 服務文件---.svc的時候,你很有可能會遇到下面的問題:
404 – Not Found - The page you are requesting cannot be served because of the extension of the configuration. If the page is a script, add a handler. If the file should be downloaded, add a MIME map.
解決方案:
404,很熟悉吧。就是沒找到文件。
其實,這問題很簡單,發生錯誤的主要原因是HTTP Handler默認配置中的虛擬目錄並沒有映射(mapping)到以.svc為后綴的文件名。svc我們都知道在WCF機制中的重要性。既然目錄都找不到,當然就會報錯的哦!~。
步驟:
第一步:打開命令提示框。也就是cmd。
第二步:在黑屏窗口中,通過cd 導航到一下目錄:
C:\Windows\Microsoft.Net\Framework\v3.0\Windows Communication Foundation
第三步:然后輸入:
ServiceModelReg –i
如圖
這樣就OK了。
二。在IIS中,無法找到Window Authentication(Window 驗證)
我們都知道,在IIS 7.0中,默認情況下有以下3中驗證方式:
Anonymous(匿名,默認情況下打開)
Impersonation( 模擬身份,默認情況關閉)
Forms(默契情況下關閉)
如圖:
可能有些童鞋會覺得,不對啊,好像上面還缺少一種。對,缺少的就是“Windows Authentication”這個驗證方式。那么,有些人就會問,是沒有了呢?還是被路人甲給隱藏了呢?
呵呵,其實是隱藏的!~~微軟這孩子已經把它不作為默認出現了。如果你真的需要這種驗證方式,那么可以如下這么做:
打開控制面板(Control Panel),然后找到“Programs and Features”,在點擊“Turn Windows Features on/off “,如下:
然后。。。
勾選上就可以了~~~~
三。Login failed for user 'IIS APPPOOL\Classic .NET
這種情況主要發生在運用Windows Credentials 訪問數據庫時。宿主服務器(Host Server) 有sql 2008數據庫以及有HTTP 請求經過路由(routed)。
基於這種情況的主要是因為改變這個Classic .NET Application的進程屬性標識,所以如果碰到這個情況,那么你需要把你的虛擬目錄映射(mapped)Classic .NET Application中就可以了。
過程如下:
第一步:打開你的IIS 管理器(我很喜歡直接在“開始”→“運行”里敲入 inetmgr,然后打開,覺得很酷!~嘻嘻。)
第二步:在IIS 管理器里,選擇“Application Pools(應用程序池)”,在右邊的列表里,選擇“Class .NET AppPools”
第三步:打開它的“Advanced Setting(高級設置)”。把Process Model下面的Identity屬性改為LocalSystem,如下圖:
四。HTTP Error 500.23 - Internal Server Error
為什么會發生這樣的錯誤呢?這個很大程度上是因為和托管的管道模式(Managed Pipeline Mode)設置有關系.
這個主要有2個解決方案:
第一個:改變你虛擬目錄映射的Application Pool(應用程序池)的Managed Pipeline 模式。默認情況下,你虛擬目錄將映射到DefaultAppPool下的Integrated Managed Pipeline模式。OK,我們需要把它從Integrated 到Classic模式就行了。
方法2:為你的虛擬目錄創建一個新的Application
在你的網頁目錄下,右鍵,添加一個“Application”,如下:
在Aplication Pool下面選擇Classic.NetAppPool就可以了。。。
后記
好吧,這篇文章不是我原創的,我只是在把它用比較通俗的話翻譯成了中文,如果E文好的童鞋,可以直接看連接。