[英]HTTP Error 500.19 - Internal Server Error IIS 7.5
我有一個網站的本地副本,我知道它具有有效的web.config文件,該文件可以在生產環境中以及在VIsual Studio 2013中運行。它在.net 4.0版上運行。 我收到了可怕的“ HTTP錯誤500.19-內部服務器錯誤”。 錯誤頁面的config source部分中有奇怪的信息:
配置源
-1: 0
有人以前見過這個,對解決它有任何想法嗎? 應用程序池設置正確,我檢查了該文件夾的權限,並向所有人添加了完整權限。
謝謝!
此錯誤有很多根源-我似乎已經擊中了大多數:((
這適用於Win Server 2008 R2 64位SP1和IIS 7.5。
Web應用程序和分配的應用程序池之間的.NET版本不同
通常,Web-app .NET版本是在Web.config文件中指定的
...
<system.web>
<httpRuntime targetFramework="4.5" />
<compilation targetFramework="4.5.2" />
...
分配給此應用程序的應用程序池的.NET版本必須兼容
獲取分配給網絡應用的應用池
IIS Manager > [web-app] > Basic Settings > Application Pool
設置應用程序池的.NET版本
IIS Manager > Application Pools > [app-pool-name] > Basic Settings > .NET Framework Version
通常,.NET 2.0.50727和.NET 4.0.30319只有兩種選擇
我們已經安裝了.NET 4.6.1-(4.6.01055),但是在IIS中,僅顯示上述版本。
Web應用程序物理路徑設置為映射的文件夾
與Web應用程序關聯的物理路徑必須是UNC路徑-而不是映射路徑。
IIS Manager > [web-app] > Basic Settings > Physical Path
這有效:
\\[server-name]\share
這失敗了:
M:\share
原因是映射的網絡驅動器僅存在於您的會話中,而不存在於IIS正在運行的會話中。
Web應用程序物理路徑訪問權限
在應用程序池中設置的用戶帳戶必須具有足夠的訪問權限才能訪問Web應用程序物理路徑。
必須為該用戶帳戶授予以下權限(具有子文件夾的繼承權限):
IIS 7.5具有內置虛擬帳戶“ ApplicationPoolIdentity”,該帳戶可用於所有應用程序池。 當此內置帳戶與應用程序池關聯時,IIS將為該應用程序池創建一個新的唯一用戶帳戶。
如果使用此默認帳戶機制,則必須通過Windows Explorer使用以下格式為IIS服務器上的關聯帳戶授予權限:
IIS AppPool\<app-pool-name>
請注意,必須在“位置...”中選擇具有以上格式(不區分大小寫)的應用程序池名稱的IIS服務器(應用程序池所在的位置)。 當您單擊“檢查名稱”時,將解析唯一的應用程序池帳戶,然后可以為其分配正確的權限。
因為每個應用程序池必須具有唯一的名稱,所以關聯的帳戶也是唯一的。
除了使用IIS內置帳戶外,另一個選擇是在專用服務帳戶下運行應用程序池。 使用服務帳戶意味着密碼不會過期(除其他外)。 服務帳戶必須在根文件夾上具有上述權限。
也可以使用普通用戶帳戶,但是不建議這樣做,因為密碼已過期並且需要仔細設置相關的訪問權限。
App-Pool帳戶密碼已更改/已過期
對於應用程序池用戶帳戶,如果此密碼已更改或過期,則需要在IIS中顯式更新密碼
IIS Manager > Application Pools > [app-pool-name] > Advanced Settings > Process Model > Identity
如果您使用IIS內置虛擬帳戶“ ApplicationPoolIdentity”,則此方法不適用-創建的帳戶沒有密碼。 使用IIS虛擬帳戶機制的另一個原因。
未安裝URL重寫模塊
如果網絡應用使用重寫規則,則必須安裝URL重寫模塊
重寫規則可以在Web.config文件中指定
...
<rewrite>
<rules>
<rule name="Timesheets Index Rewrite" stopProcessing="true">
<match url="Timesheets/Index" ignoreCase="true" />
<action type="Redirect" redirectType="Permanent" url="Timesheets/Entries" />
</rule>
...
未在IIS中注冊ASP.NET
根據IIS和.NET 4的安裝/更新順序,可能需要向IIS重新注冊ASP.NET。
要檢查,請在命令提示符下:
cd C:\Windows\Microsoft.NET\Framework64\v4.0.30319
aspnet_regiis -lv
這應該給像
...
2.0.50727.0 C:\Windows\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll
4.0.30319.0 C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll
4.0.30319.0 C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll
在此,.NET 2為64位應用程序注冊,.NET 4為32和64位應用程序注冊。
如果您的目標框架和32/64位配置不在列表中:
aspnet_regiis -i
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.