繁体   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