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