|
|
|
|
|
幾天前配置一個(gè)IIS環(huán)境的網(wǎng)站時(shí),出現(xiàn)500錯(cuò)誤。根據(jù)錯(cuò)誤提示,很快把問(wèn)題解決了,現(xiàn)記錄一下,希望能幫到遇到同樣問(wèn)題的網(wǎng)友。
問(wèn)題描述
應(yīng)用程序“DEFAULT WEB SITE”中的服務(wù)器錯(cuò)誤Internet Information Services 7.5
錯(cuò)誤摘要
HTTP 錯(cuò)誤 500.24 - Internal Server Error
檢測(cè)到在集成的托管管道模式下不適用的 ASP.NET 設(shè)置。
詳細(xì)錯(cuò)誤信息
模塊 ConfigurationValidationModule
通知 BeginRequest
處理程序 StaticFile
錯(cuò)誤代碼 0x80070032
請(qǐng)求的 URL ----------
物理路徑 ---------
登錄方法 尚未確定
登錄用戶 尚未確定
最可能的原因:
- system.web/identity@impersonate 設(shè)置為 true。
可嘗試的操作:
- 如果應(yīng)用程序支持它,則禁用客戶端模擬。
- 如果你確信可以忽略此錯(cuò)誤,則可以通過(guò)將 system.webServer/validation@validateIntegratedModeConfiguration 設(shè)置為 false 來(lái)禁用它。
- 使用經(jīng)典 .NET 模式將此應(yīng)用程序移到應(yīng)用程序池 - 例如,%SystemRoot%\system32\inetsrv\appcmd set app "Default Web Site/" /applicationPool:"Classic .NET AppPool"
(可以將“Classic .NET AppPool”設(shè)置為在經(jīng)典托管管道模式下運(yùn)行的其他應(yīng)用程序池的名稱) 鏈接和更多信息如果你不清楚或無(wú)法使用前兩個(gè)選項(xiàng),則首選的做法是將此應(yīng)用程序切換到經(jīng)典模式。
解決方法
根據(jù)錯(cuò)誤描述,“最可能的原因”是:system.web/identity@impersonate 設(shè)置為 true。那我就在網(wǎng)站配置文件web.config
里把此設(shè)置的true改為false。結(jié)果,問(wèn)題就解決了。
我試試在網(wǎng)站配置文件web.config
里把方法一的設(shè)置語(yǔ)句刪除,結(jié)果,問(wèn)題也能解決??梢?jiàn),system.web/identity@impersonate 的默認(rèn)值為 false。
如果不更改web.config
配置文件,我們也可以把應(yīng)用程序池的“托管管道模式”的“集成”改為“經(jīng)典”。如下圖:
總結(jié)
上面就是此文所述問(wèn)題的三種解決方法了。
知識(shí)擴(kuò)展:應(yīng)用程序池的集成模式和經(jīng)典模式
在管道中,應(yīng)用程序池有兩種運(yùn)行模式:集成模式和經(jīng)典模式。
應(yīng)用程序池模式會(huì)影響服務(wù)器處理托管代碼請(qǐng)求的方式。
如果托管應(yīng)用程序在采用集成模式的應(yīng)用程序池中運(yùn)行,服務(wù)器將使用 IIS 和 ASP.NET 的集成請(qǐng)求處理管道來(lái)處理請(qǐng)求。
如果托管應(yīng)用程序在采用經(jīng)典模式的應(yīng)用程序池中運(yùn)行,服務(wù)器會(huì)繼續(xù)通過(guò) Aspnet_isapi.dll 路由托管代碼請(qǐng)求,其處理請(qǐng)求的方式就像應(yīng)用程序在 IIS 6.0 中運(yùn)行一樣。
指的是與IIS 6或者之前版本保持兼容的一種模式,一個(gè)典型問(wèn)題就是,在處理ASP.NET這種動(dòng)態(tài)網(wǎng)站的時(shí)候,它是通過(guò)一個(gè)所謂的ISAPI程序,作為插件的方式來(lái)工作的。針對(duì)不同的動(dòng)態(tài)應(yīng)用程序(例如ASP,PHP等),會(huì)需要不同的ISAPI。
在IIS7之前,如IIS6或IIS5,請(qǐng)求處理管道分為兩個(gè):IIS請(qǐng)求處理管道和ASP.NET管道,若客戶端請(qǐng)求靜態(tài)資源則只有IIS管道進(jìn)行處理,而ASP.NET管道不會(huì)處理該請(qǐng)求。從IIS7開始兩個(gè)管道合二為一,稱為集成管道。這種全新的模式,允許我們將ASP.NET更好地與IIS集成,甚至允許我們?cè)贏SP.NET中編寫一些功能(例如Module)來(lái)改變IIS的行為(擴(kuò)展)。集成的好處是,不再通過(guò)ISAPI的方式,提高了速度和穩(wěn)定性。至于擴(kuò)展,則可以使得我們對(duì)于IIS以及其他類型的請(qǐng)求有更多的控制。