HTTP 错误 500.19- Internal Server Error 是一种常见的服务器错误,在开发和管理网站时可能会遇到。该错误通常表示 IIS 配置文件中有一些问题,服务器无法对请求做出正确响应导致的。以下是解决该问题的完整攻略:
1. 确定错误类型
首先,需要确定出现的 500.19 错误的具体类型,以便知道该如何修复它。主要有三种类型:
- 错误代码 0x80070021 —— 该程序集无法加载
- 错误代码 0x8007000d —— 配置文件是破损的
- 错误代码 0x80070005 —— 拒绝访问
在 IIS 管理器的“详细错误”中能够看到这些错误代码。
2. 确认应用程序池
应用程序池是处理 Web 应用程序请求的进程。IIS 支持在同一服务器上运行多个应用程序池,每个应用程序池都可包含一个或多个 Web 应用程序。请确认访问的 Web 应用程序的应用程序池已启动。如果停止应用程序池,请右键单击应用程序池并选择“启动”。
3. 检查文件权限
确认 Web 应用程序的文件夹和文件的权限设置正确。特别是要确认 App_Data 和 LogFiles 文件夹具有足够的权限,应将“修改”权限授予 IIS_IUSRS。
4. 修改 Applicationhost.config
有时候,错误可能是由于 IIS 配置文件错误导致的。可以编辑 %windir%\System32\inetsrv\config 下的 Applicationhost.config 文件。首先应对文件进行备份,然后尝试进行以下更改:
<sectionGroup name="system.webServer" requestTimeout="00:00:00" type="System.WebServer.Configuration.SystemWebServerSectionGroup, System.WebServer, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<section name="asp" overrideModeDefault="Deny" allowDefinition="MachineToApplication" />
<section name="netFramework" overrideModeDefault="Deny" />
<section name="handlers" overrideModeDefault="Deny" />
<section name="security" overrideModeDefault="Deny" />
<section name="serverRuntime" overrideModeDefault="Deny" />
<section name="httpErrors" overrideModeDefault="Deny" />
<section name="httpLogging" overrideModeDefault="Deny" />
<section name="dynamicIpSecurity" overrideModeDefault="Deny" />
</sectionGroup>
需要修改为:
<sectionGroup name="system.webServer" requestTimeout="00:00:00" type="System.WebServer.Configuration.SystemWebServerSectionGroup, System.WebServer, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<section name="asp" overrideModeDefault="Allow" allowDefinition="MachineToApplication" />
<section name="netFramework" overrideModeDefault="Allow" />
<section name="handlers" overrideModeDefault="Allow" />
<section name="security" overrideModeDefault="Allow" />
<section name="serverRuntime" overrideModeDefault="Allow" />
<section name="httpErrors" overrideModeDefault="Allow" />
<section name="httpLogging" overrideModeDefault="Allow" />
<section name="dynamicIpSecurity" overrideModeDefault="Allow" />
</sectionGroup>
示例1
假设我们在运行 ASP.NET 应用程序时遇到了下面的错误:
HTTP 错误 500.19 - 内部服务器错误
无法读取配置文件
h:\webapp\web.config
的信息,因为它与下面的某个配置节不能共存:
'directoryBrowse'
这里指定了错误代码:0x8007000d,表示 Web.config 文件出现了问题,不允许某些配置部分同时存在。在这种情况下,解决方法是找到重复的节点,并将其删除。
<location path="one">
<system.webServer>
<directoryBrowse enabled="false" />
</system.webServer>
</location>
<location path="two">
<system.webServer>
<directoryBrowse enabled="true" />
</system.webServer>
</location>
比如,上面的 Web.config 文件包含了两个路径("one" 和 "two"),并且为两个位置的 directoryBrowse 指定了不同的值。如果想要修复该错误,只需要将一个节点删除就好了。
示例2
假设我们在运行 ASP.NET 应用程序时遇到了下面的错误:
HTTP 错误 500.19 - 内部服务器错误
无法读取配置文件
h:\webapp\web.config
的信息,因为这个配置文件有一个不正确的元素
'configsections'。
这里指定了错误代码:0x8007003a,表示 Web.config 文件出现了问题,其中 configsections 元素不被识别。要解决这个问题,需要确认 configsections 元素的命名空间是正确的。如果命名空间错误,需要将其更正为以下内容:
<configSections>
<sectionGroup name="system.web">
<section name="authorization" type="System.Web.Configuration.AuthorizationSection,
System.Web, version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
allowDefinition="MachineToApplication"/>
</sectionGroup>
</configSections>
此时,需要添加 system.web 命名空间。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:HTTP 错误 500.19- Internal Server Error 错误解决方法 - Python技术站