簡體   English   中英

HTTP錯誤500.19-內部服務器錯誤IIS 7.5

[英]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

確保您的appPool設置為“集成”

在這里查看模式之間的區別:

IIS7中的“經典”和“集成”管道模式有什么區別?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM