Web 应用程序问题(web.config 错误)HTTP 500.19 与 IIS7.5 和 ASP.NET v2

Posted

技术标签:

【中文标题】Web 应用程序问题(web.config 错误)HTTP 500.19 与 IIS7.5 和 ASP.NET v2【英文标题】:Web Application Problems (web.config errors) HTTP 500.19 with IIS7.5 and ASP.NET v2 【发布时间】:2010-12-20 23:44:36 【问题描述】:

这让整个团队都发疯了。 IIS 或我们的 Web 服务器肯定有一些简单的错误配置部分,但是每次我们尝试在 IIS 7.5 上运行 ASP.NET Web 应用程序时,我们都会收到以下错误...

这是完整的错误:

HTTP Error 500.19 - Internal Server Error

The requested page cannot be accessed because the related configuration  
data for the page is invalid.

`Detailed Error Information` 
Module              IIS Web Core
Notification        Unknown
Handler             Not yet determined
Error Code          0x8007000d
Config Error
Config File         \\?\E:\wwwroot\web.config
Requested URL       http://localhost:80/Default.aspx
Physical Path 
Logon Method        Not yet determined
Logon User          Not yet determined
Config Source
   -1: 
    0: 

机器正在运行 Windows Server 2008 R2。我们正在使用 Visual Studio 2008 开发我们的 Web 应用程序。

根据微软的说法,代码 8007000d 意味着我们的 web.config 中存在语法错误——除了项目在本地构建和运行良好。在 XML Notepad 中查看 web.config 也不会出现任何语法错误。我假设它一定是我的某种糟糕的配置......?

有谁知道我可以在哪里找到有关该错误的更多信息? EventViewer 中也没有显示任何内容:(

不确定还有什么可以帮助提及...

非常感谢您的帮助。谢谢!

更新! - 在下面发布 WEB.CONFIG

好的,自从我发布了上面的原始问题以来,我已经在 web.config 中找到了导致错误的确切行。

这是行(它们出现在<System.webServer> 标记之间)...

    <httpHandlers>
        <remove verb="*" path="*.asmx"/>
        <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=f2cb5667dc123a56"/>
    </httpHandlers>

注意:如果我删除&lt;httpHandlers&gt; 之间的行,我仍然会收到错误消息。我真的必须删除&lt;httpHandlers&gt;(以及中间的行)才能停止出现上述错误。

然而,一旦我这样做了,我就会得到一个 new 500.19 错误。谢天谢地,这一次 IIS 实际上告诉我 web.config 的哪一部分导致了问题...

    <handlers>
        <remove name="WebServiceHandlerFactory-Integrated"/>
        <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory,System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=f2cb5667dc123a56"/>
        <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=f2cb5667dc123a56"/>
        <add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=f2cb5667dc123a56"/>
    </handlers>

看看这些行,很明显问题已经在同一个&lt;system.webServer&gt; 标记内进一步迁移到&lt;handlers&gt; 标记。

新错误也更加明确,特别抱怨它无法识别属性“validate”(如上面第三行所示)。删除此属性然后会抱怨同一行没有所需的“名称”属性。添加此属性然后会引发 ASP.NET 错误...

无法加载文件或程序集 'System.web.Extensions, 版本=1.0.61025.0,文化=中性, PublicKeyToken=f2cb5667dc123a56' 或 它的依赖项之一。系统 找不到指定的文件。

显然,我认为这些新错误是由于我一开始就删除了 &lt;httpHandlers&gt; 标记而引起的——它们显然是应用程序所需要的——所以问题仍然存在:为什么要这些标签首先会在 IIS 中引发错误???

我是否需要在 IIS 上安装一些东西才能使其与它们一起工作?

再次感谢您的帮助。

WEB.CONFIG

这是我们的 web.Config 的麻烦点...我希望这可以帮助某人找到我们的问题!

<system.Web>

<!-- stuff cut out -->

    <httpHandlers>
        <remove verb="*" path="*.asmx"/>
        <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=f2cb5667dc123a56"/>
        <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=f2cb5667dc123a56"/>
        <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=f2cb5667dc123a56" validate="false"/>
    </httpHandlers>
    <httpModules>
        <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=f2cb5667dc123a56"/>
    </httpModules>
</system.web>

<system.webServer>
    <validation validateIntegratedModeConfiguration="false"/>
    <modules>
        <add name="ScriptModule" preCondition="integratedMode" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=f2cb5667dc123a56"/>
    </modules>
    <remove verb="*" path="*.asmx"/>
    <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=f2cb5667dc123a56"/>
    <handlers>
        <remove name="WebServiceHandlerFactory-Integrated"/>
        <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory,System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=f2cb5667dc123a56"/>
        <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=f2cb5667dc123a56"/>
        <add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=f2cb5667dc123a56"/>
    </handlers>
</system.webServer>

【问题讨论】:

删除web.config中的所有cmets。它们以&lt;!-- 开头,以--&gt; 结尾。 哇。这与 有关 刚刚替换了我的 web.config 中的 httphandlers 和 httpmodules 部分,一切正常。谢谢! 您的建议使我开始随机删除 web.config 的部分,直到错误发生变化,这帮助我了解了 URL ReWrite 没有正确安装(必须重新安装)的事实,所以 部分导致了 500.19。 仅供参考,我也遇到了这个错误......这只是因为.Net Framework 没有安装在服务器上。 【参考方案1】:

啊哈!我解决了这个问题!天哪,对于像我这样的 IIS 经验有限的人来说,这简直是一头野兽。我真的以为我会用整个周末来修复它。

这是任何遇到这个邪恶问题的人的解决方案。

首先要注意:如果您希望这是您的解决方案,请确保您具有相同的错误代码 (0x8007000d) 和配置源 (-1: 0 :)。如果没有,这不是你的解决方案。

接下来要注意的事情:AJAX 未正确安装在您的 web.config 中!

按照本指南解决此问题:http://www.asp.net/AJAX/documentation/live/ConfiguringASPNETAJAX.aspx

然后,通过以下链接在您的生产服务器上安装 AJAX 1.0 扩展

http://www.asp.net/ajax/downloads/archive/更新微软似乎已经删除了上面的页面:(

就是这样!

【讨论】:

谢谢! AJAX 扩展是问题所在。由于 AJAX 现在已内置于 3.5,因此我将该部分注释掉了 看起来微软打破了配置 ASP.NET AJAX 的第一个链接。 找到了旧内容的镜像。令人讨厌的是 MS 文档如此频繁地消失。 您的回答表明此错误仅适用于 Ajax,但它也适用于 urlrewrite,这意味着该错误可能只是指任何依赖于不可用模块的建议。 @Chuck,“我感觉像 Rocky” 是什么意思?【参考方案2】:

这可能相关也可能不相关....我从上面提到的相同错误开始,开始谷歌搜索,进行更改,获取新错误,无限循环。

由于该错误而导致我的更改与服务器管理部分下的 IIS 管理器中的功能委派混淆了。很抱歉,我不记得我更改了哪一个,但谷歌搜索可能会有所帮助。

这让我摆脱了第一个错误,进入了一个全新的其他错误流中,有些完全荒谬。 (在虚拟目录下运行时会出现一个错误,将其转换为应用程序会产生另一个错误,等等)。最终解决这一系列错误的是: IIS 管理器、应用程序池、DefaultAppPool、启用 32 位应用程序=True

我在 32 位 windows xp 机器上启动了这个应用程序,现在我在 64 位 Windows 7 机器上运行它。

希望这对其他人有所帮助。

【讨论】:

【参考方案3】:

我有这些确切的症状,我的问题与彼得的问题相似。正在新服务器上设置现有项目。我的项目引用了 IIS7 URL 重写模块,但尚未在新服务器上安装该模块。安装它解决了我的问题。

您可以使用 Microsoft Web Platform Installer 来安装它。执行,选择Products,在左侧菜单中选择Server,在列表中找到URL Rewrite并安装。

或者你可以下载它here。

【讨论】:

> 我有这些确切的症状,我的问题与彼得的问题相似。正在新服务器上设置现有项目。我的项目引用了 IIS7 URL 重写模块,但尚未在新服务器上安装该模块。安装它解决了我的问题。谢谢,DJjeffJ。为我修好了。未安装开发服务器上的 URL 重写模块。 是的......我也是,我有 .net 3.5,所以 ajax 已经包含在内,但重写不是。 The IIS URL Rewrite module is available on the IIS website. 4 年过去了,这仍然是个问题。错误中绝对没有任何内容可以提供有关问题根源的任何线索。我也正在将现有解决方案移动到尚未打开模块的新服务器上,我只是偶然发现了这个答案,所以在我撕扯头发时感谢一堆! Server 2016 的问题仍然存在,没有安装显示“URL 重写”的功能/模块。您必须使用 来安装它,然后我的网站才能正常工作(或至少停止给出该问题)。【参考方案4】:

在 web.config 文件中注释以下行。

<modules>
    <!--<add name="ScriptModule" preCondition="integratedMode" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>-->
</modules>

<handlers>
    <remove name="WebServiceHandlerFactory-ISAPI-2.0"/>
    <!--<add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
    <add name="ScriptResource" verb="GET" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>-->
</handlers>

这会起作用。

【讨论】:

【参考方案5】:

我只是添加了一个答案,因为我花了几个小时试图解决相同的症状(但不同的问题):

可能的原因是 64 位应用程序池中的 x86 dll,解决方案是在应用程序池设置中启用 32 位应用程序。

【讨论】:

此答案对设置 Umbraco CMS 期间的 500.19 错误也有效。【参考方案6】:

我的 IIS 7.5 不理解 web.config 中的标签 在 VS 2010 中,它也在该标签下划线。检查您的配置文件是否准确以找到所有带下划线的标签。 我把它放在评论中,错误就消失了。

【讨论】:

【参考方案7】:

在一台新机器上与此作斗争一天后,我发现了以下链接。我错过了重写模块。这解决了所有问题。

http://forums.iis.net/t/1176834.aspx

http://learn.iis.net/page.aspx/460/using-the-url-rewrite-module/

【讨论】:

+1。我从 TFS 获取的 web.config 有 &lt;rewrite&gt; 标签,但我没有安装 urlrewrite。我注释掉了 &lt;rewrite&gt; 的东西,我的网站立即编译并加载。 花了一个小时才想起我在网站中使用了重写。我希望微软有一个更好的编译器错误消息系统。如果我能看到 web.config 的确切行,我会在几分钟内解决问题。 如何在 Visual Studio for IIS Express 中安装 Url Rewrite?【参考方案8】:

我在 Windows 7 中遇到了同样的问题。

解决方案是转到基本设置 > 连接身份 > 特定用户 - 并以用户身份登录,而不是默认的“直通”

这为我解决了这个问题。

【讨论】:

【参考方案9】:

对我来说,为 iis 重新注册 asp.net 就可以了。希望这对其他人有所帮助。

aspnet_regiis.exe -i

【讨论】:

【参考方案10】:

遇到了与上面相同的问题,相同的错误代码等。在 Windows 8 上设置本地网站。经过大量搜索,发现我们缺少 URL 重写。下载后一切正常。 :)

【讨论】:

你为我节省了很多时间......太好了!! 类似,这个错误信息完全没有帮助!【参考方案11】:

我有同样的错误。我有一个 .net 框架版本 2.0 的 IIS 站点,但我的应用程序需要 4.0。我更改了版本,它工作了。

如果有人可能有同样的问题,发帖只是为了提醒。

【讨论】:

【参考方案12】:

Windows 7

试试这个,

以管理员身份运行 cmd。

卸载所有 iis。

start /w pkgmgr.exe /uu:IIS-WebServerRole;WAS-WindowsActivationService

重新安装iis,正常工作

阿兰

【讨论】:

【参考方案13】:

根据此处和其他地方的答案进行总结:

    检查应用程序池的 .NET 版本(例如 2.0 与 4.0) 检查是否安装了所有 IIS 引用的模块。在这种情况下,它是 AJAX 扩展(现在可能不是这种情况),但 URL 重写 是一种常见的扩展。

【讨论】:

【参考方案14】:

我将&lt;customErrors&gt; 标记放在&lt;system.webServer&gt; 内而不是&lt;system.web&gt; 所属的位置时出现此错误。 &lt;customErrors&gt; 标签下有一个小波浪线,但我没有马上注意到。

【讨论】:

【参考方案15】:

Server 2016 上的同样问题,IIS 10,500.19 错误。我安装了重定向模块并且它工作。我不知道为什么默认情况下不包含它。

https://www.iis.net/downloads/microsoft/url-rewrite#additionalDownloads

需要明确的是,IIS 7 中的 web.config 似乎可以工作,或者被设计为可以工作,但是缺少这个模块会产生非常奇怪和无用的错误。谷歌搜索会将您带到一个 Microsoft 页面,该页面坚持认为您的网站已损坏或您的 web.config 已损坏。似乎两者都不是。

那个无用的页面在这里:https://support.microsoft.com/en-us/kb/942055

【讨论】:

【参考方案16】:

另一种无缘无故获得 500.19 错误的方法是 - 缺少目录和/或对它们的权限损坏。

如果是这个问题,我相信这个问题询问的是完整的 IIS 版本。我假设这是因为这条线:

Config File         \\?\E:\wwwroot\web.config

IIS 安装程序通常会为您创建wwwroot,这是所有网站的默认根文件夹和虚拟目录的挂载点。它始终存在,所以没问题,您通常不会太在意。

由于 web.config 文件是分层的,您可以在其中放置一个主 web.config 文件并在其中进行一些根设置,所有站点都将继承它。 IIS 检查该文件是否存在并尝试加载它。

然而,第一个有趣的部分:

如果您正确安装了 IIS,该目录将存在。如果它不存在,您将收到 500 类错误。但是,如果您使用文件/目录权限,尤其是“高级”权限,您实际上可能会意外拒绝 IIS 服务帐户扫描/读取此目录的内容。如果 IIS 无法检查 wwwroot\web.config 是否存在,或者它是否存在并且 IIS 无法打开和读取它 - bam - 500 类错误。

但是,对于完整的 IIS,这是不太可能的。使用完整 IIS 的开发人员/管理员通常不愿意使用 wwwroot,因此它通常保持正确配置。

但是,在 IIS Express 上..

通常,IIS Express“正常工作”。通常,使用 IIS Express 的开发人员通常不知道它在内部与真正的 IIS 有多少相似之处。

您很容易发现 IIS Express 有自己的 applicationHost.config 文件,VS 会为您创建和管理它(在某种程度上是正确的),并且那种令人大开眼界的方式告诉您它并不那么简单和最初看起来一样的点击。

除了该配置文件,VisualStudio 还在您的Documents 文件夹下创建一个空目录结构。如果我没记错的话,IIS Express 认为这些文件夹是您网站的根目录,您的代码安装在上面的虚拟目录

稍后,就像 IIS 一样,当 IIS Express 启动时,它预计这些文件夹存在并在那里检查根 web.config 文件。 网站 web.config 文件。这些 web.config 文件几乎总是丢失 - 没关系,因为您不想要它们 - 您有您的 **application web.config",它们与其余内容一起放置在虚拟目录中。

现在,第二个有趣的部分是:IIS Express 期望空目录。它们可以是空的,但它们必须存在。如果它们不存在 - 您将收到 500 类错误,告诉您无法访问该路径的“web.config”文件。

我第一次遇到这个问题是在清理硬盘时。我发现 'documents\websites' 文件夹里满是垃圾,我认出了我不再从事的几个年前的项目,都是空的,没有一个文件,所以我把它全部删除了。一周后 - bam - 我无法运行/调试我目前正在工作的任何网站。错误为 500.19,无法读取配置文件。

因此,如果您使用 IIS Express 并看到 500 级错误告诉您读取配置,请仔细检查错误消息并阅读所有提到的路径。如果你看到类似的东西:

c:\users\user\documents\visual studio 2013\projects\WebProject1\WebProject1.web\web.config
c:\users\zeshan.munir\documents\visual studio 2015\projects\WebProject1\WebProject1.web\web.config
c:\users\zeshan.munir\documents\visual studio 2017\projects\WebProject1\WebProject1.web\web.config
etc..

准确到错误指示的位置,确保这些文件夹存在,确保 IIS 工作人员帐户可以遍历和读取它们,如果您发现有任何问题,可能就是这样。

顺便说一句。在 VisualStudio 中,在 ProjectProperties/Web 上有一个“创建虚拟目录”按钮。它本质上就是这样做的,所以你可以先尝试一下,但是 IIRC 它也可以在 applicationHost.config 文件中清除/覆盖/交换配置部分,所以如果你有任何自定义设置,请小心该按钮。

【讨论】:

【参考方案17】:

就我而言,.NET Core Windows Hosting Bundle 安装有问题。

我已经安装并在安装后使用(“net stop is /y”和“net start w3svc”)重新启动了 IIS,但我会收到 500.19 错误,错误代码为 0x8007000d 和配置源 -1:0:。

我设法通过修复 .NET Core Windows Hosting Bundle 安装并使用我上面提到的命令重新启动 IIS 来解决问题。

希望这对某人有所帮助!

【讨论】:

这对我也有用,这是一个关于安装 .NET Core Windows Server Hosting bundle 的 MSDN 博客:blogs.msdn.microsoft.com/rohithrajan/2018/03/13/… 这是一个直接下载链接:aka.ms/dotnetcore-2-windowshosting【参考方案18】:

确保您的所有 IIS 功能均已正确启用。

打开 Windows 功能(打开或关闭 Windows 功能)。

向下滚动到 Internet 信息服务

打开万维网加号框下拉

打开应用程序开发功能加号框下拉 手动勾选所有后续复选框,然后点击确定

【讨论】:

我刚刚使用就地升级方法重新安装了 Windows 10,要么我取消了其中一些框,要么重新安装取消了它们。相关的错误代码 0x80070021 出现在 500.19 页面上。【参考方案19】:

这个可爱的详细错误在 2019 年仍然存在! 我只想补充一点,如果您的 web.config 有效且可访问,则很可能是依赖性问题

正如 OP 所提到的,它是一个 AJAX 模块,而其他人通常是 Rewrite 模块。 只需留意您的 web.config 中您的标签所引用的模块和库,因为错误代码 0x8007000d 可能与 任何依赖项有关。

在我的情况下,我没有意识到 AspNetCore 包丢失并且必须安装!很高兴我找到了这篇文章!

【讨论】:

【参考方案20】:

以下配置是我的问题的原因:

    <rewrite>
      <rules>
        <clear />
        <rule name="Redirect to HTTPS" stopProcessing="true">
          <match url="(.*)" />
          <conditions>
            <add input="HTTP_HOST" pattern="^.*spvitals\.com$" />
            <add input="HTTPS" pattern="off" ignoreCase="true" />
          </conditions>
          <action type="Redirect" url="https://HTTP_HOSTREQUEST_URI" redirectType="Permanent" appendQueryString="false" />
        </rule>
      </rules>
    </rewrite>

注意:我删除了此部分以进行本地测试,因为它在 Azure 中运行良好。

【讨论】:

如果您安装了 IIS URL Rewrite 模块,您可以在 IIS 中保留重写规则。在iis.net/downloads/microsoft/url-rewrite【参考方案21】:

如果您要部署 asp.net.core 应用程序,您还必须安装 .net core 托管捆绑包。 https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/iis/index?view=aspnetcore-3.0#install-the-net-core-hosting-bundle

【讨论】:

【参考方案22】:

类似于top answer,由于缺少 IIS CORS 模块,我们得到了这个非常无用的异常。与错误代码 (0x8007000d) 和配置源 (-1: 0:) 完全相同的错误,但安装 URL 重写模块并没有解决它。

我们最近更新了 web.config,以便为一些需要它的开发人员启用 CORS,但没想到所有开发人员都需要安装 IIS CORS 模块。不幸的是,它看起来是必需的。

要修复它,请安装IIS CORS module from here。

【讨论】:

【参考方案23】:

此错误与 web.config 文件有关。当 web.config 不正确或使用 IIS 中不可用的某些功能时,就会出现此问题。就我而言,我忘记安装 URLRewrite 模块并在 web.config 中引用它。花了一些时间才找到根本原因。我开始一一删除部分并检查,然后我才能够找出实际问题。

【讨论】:

这是一个巨大的帮助,谢谢!我也正要开始修改我的 web.config。这节省了很多时间。【参考方案24】:

我在 IIS10 和 Windows 10 中收到完全相同的错误消息。我尝试了此处列出的所有内容(以及其他互联网页面),但没有修复它。解决问题的方法是再次安装 .NET Core Hosting(我选择“修复”按钮)。

我 100% 确信这是解决问题的原因,因为我还必须将相同的网站部署到其他笔记本电脑(不同品牌,但都是 Windows 10)。出现相同的错误消息 (500.19),重新安装 bundle 再次修复。

【讨论】:

我遇到了同样的问题。重新安装 .NET Core Hosting Bundle 就成功了。

以上是关于Web 应用程序问题(web.config 错误)HTTP 500.19 与 IIS7.5 和 ASP.NET v2的主要内容,如果未能解决你的问题,请参考以下文章

web.config配置错误

“web.config”配置文件在哪?

如何设置 web.config 文件以显示完整的错误消息

网站提示Web.Config 配置文件 错误 ,大吉帮忙看下!

Web.config 加密错误

Web.Config 配置文件