ChatGPT解决这个技术问题 Extra ChatGPT

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

这让整个团队都发疯了。 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>

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

但是,一旦完成此操作,我就会收到一个新的 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>

查看这些行,很明显问题已在同一 <system.webServer> 标记内进一步迁移到 <handlers> 标记。

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

无法加载文件或程序集“System.web.Extensions,Version=1.0.61025.0,Culture=neutral,PublicKeyToken=f2cb5667dc123a56”或其依赖项之一。该系统找不到指定的文件。

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

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

再次感谢任何帮助。

网页配置

这是我们的 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 中的所有评论。它们以 <!-- 开头并以 --> 结尾。
呜呜。这与 有关
刚刚替换了我的 web.config 中的 httphandlers 和 httpmodules 部分,一切正常。谢谢!
您的建议使我开始随机删除 web.config 的部分,直到错误发生变化,这帮助我了解 URL ReWrite 没有正确安装(必须重新安装),因此 部分导致了 500.19。
仅供参考,我也有这个错误......这只是因为.Net Framework 没有安装在服务器上。

D
David Ferenczy Rogožan

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

您可以使用 Microsoft Web 平台安装程序来安装它。执行它,选择产品,在左侧菜单中选择服务器并在列表中找到 URL Rewrite 并安装它。

或者您可以下载它here


> 我有这些确切的症状,我的问题与彼得的问题相似。正在新服务器上设置现有项目。我的项目引用了 IIS7 URL 重写模块,但尚未在新服务器上安装该模块。安装它解决了我的问题。谢谢,DJjeffJ。为我修好了。未安装开发服务器上的 URL 重写模块。
4年过去了,这仍然是一个问题。错误中绝对没有任何内容可以提供有关问题根源的任何线索。我也正在将现有解决方案移动到尚未打开模块的新服务器上,我只是偶然偶然发现了这个答案,所以当我把头发扯掉时,我非常感谢!
Server 2016 仍然存在此问题,没有要安装的功能/模块显示“URL 重写”。您必须使用 来安装它,然后我的网站才能正常工作(或至少停止给出该问题)。
8年过去了,这仍然是一个问题。感谢@JJMpls 的精彩回答
C
Chuck Le Butt

啊哈!我解决了这个问题!天哪,对于像我这样的 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,“我感觉像洛基”是什么意思?
k
kerrydewhirst

在一台新机器上与此作战一天后,我发现了以下链接。我错过了重写模块。这解决了一切。

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

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


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

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


T
The Edge

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


伙计,你为我节省了很多时间......很好!
类似的,这个错误信息是完全没有帮助的!
G
Guillaume86

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

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


此答案对于设置 Umbraco CMS 期间的 500.19 错误也有效。
q
quetzalcoatl

另一种无缘无故获得 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 文件中清除/覆盖/交换配置部分,所以如果你有任何自定义设置,请小心该按钮。


c
ctc

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

aspnet_regiis.exe -i

M
Mark Sowul

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

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


K
Kyle

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

    <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_HOST}{REQUEST_URI}" redirectType="Permanent" appendQueryString="false" />
        </rule>
      </rules>
    </rewrite>

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


如果您安装了 IIS URL 重写模块,您可以在 IIS 中保留重写规则。它在 iis.net/downloads/microsoft/url-rewrite
d
demonicdaron

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

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

我设法通过修复 .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
A
Avinor

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

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

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


a
anand shukla

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


这是一个巨大的帮助,谢谢!我也正要开始修改我的 web.config。这节省了很多时间。
t
tigrou

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

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


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

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

该错误使我受到的更改与服务器管理部分下的 IIS 管理器中的功能委派混淆了。对不起,我不记得我改变了哪一个,但谷歌搜索可能会有所帮助。

这让我超越了第一个错误,进入了一个全新的其他错误流,有些完全荒谬。 (在虚拟目录下运行时会出现一个错误,将其转换为应用程序会产生另一个错误,等等)。最终解决这一系列错误的是:IIS manager, Application Pools, DefaultAppPool, Enable 32-Bit applications=True

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

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


K
Konstantin

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


s
stealthyninja

在 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>

这将起作用。


J
Joel Peltonen

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

如果有人可能有同样的问题,张贴只是作为提醒。


C
Colin

确保正确启用所有 IIS 功能。

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

向下滚动到 Internet 信息服务

打开万维网加号框下拉

打开应用程序开发功能加框下拉

手动勾选所有后续复选框,然后点击确定

https://i.stack.imgur.com/bdIVA.png


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

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

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

这为我解决了这个问题。


A
Alan10977

Windows 7的

尝试这个,

以管理员身份运行 cmd。

卸载所有 iis。

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

重新安装iis并正常工作

阿兰


f
foldinglettuce

我通过将 <customErrors> 标记放在 <system.webServer> 而不是它所属的 <system.web> 内得到了这个错误。 <customErrors> 标记下有一个小波浪线,但我没有立即注意到它。


n
notracs

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

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

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


A
ADM-IT

如果您要部署 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


关注公众号,不定期副业成功案例分享
关注公众号

不定期副业成功案例分享

领先一步获取最新的外包任务吗?

立即订阅