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

这快把整个团队逼疯了。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。我们正在使用 VisualStudio2008开发我们的 Web 应用程序。

根据 Microsoft 的说法,代码8007000d 意味着在 web.config 中存在语法错误——除了项目在本地构建并运行良好。在 XML 记事本中查看 web.config 也不会出现任何语法错误。我猜一定是我的设计不好吧?

有人知道我在哪里可以找到关于这个错误的进一步信息吗? 在 EventViewer 中也没有显示: (

不知道还能说什么。

非常感谢你的帮助,谢谢!

更新

好的,自从我发布了上面的原始问题,我已经追踪了导致错误的 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>标记中。

新的错误也更加明确,并且特别抱怨它不能识别属性“ valid”(如上面第三行所示)。删除这个属性会让它抱怨同一行没有必需的“ name”属性。添加这个属性然后显示 ASP.NET错误..。

无法加载文件或程序集 系统,网络,扩展, 版本 = 1.0.61025.0,文化 = 中性, PublicKeyToken = f2cb5667dc123a56’或 它的一个依赖项,系统 无法找到指定的文件。

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

我是否需要在 IIS 中安装一些东西来使它们工作?

再次感谢你的帮助。

网络配置

这里是我们的 网络。配置的麻烦位... 我希望这有助于有人找到我们的问题!

<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>
277231 次浏览

啊哈!我解决了这个问题!我的天,对于像我这样缺乏 IIS 经验的人来说,这简直是头野兽。我真的以为我要花整个周末来修理它。

这里有解决任何其他人谁曾经来到这个邪恶的问题。

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

下一件需要注意的事情: 在 web.config 中没有正确安装 AJAX!

按照下面的指南解决这个问题:
Http://www.asp.net/ajax/documentation/live/configuringaspnetajax.aspx

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

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

就是这样!

这可能是相关的,也可能不是相关的... ... 我从上面提到的同样的错误开始,开始搜索,做出改变,得到新的错误,无休止的循环。

这个错误给我带来的改变是与服务器管理部分下的 IIS 管理器中的特性委派(Feature Mission)相混淆。对不起,我不记得我改了哪个,但是谷歌可能会有帮助。

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

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

希望这能帮到其他人。

我有这些症状,我的问题和彼得的类似。正在新服务器上设置现有项目。我的项目引用了 IIS7URL 重写模块,但是这个模块还没有安装到新的服务器上。安装它解决了我的问题。

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

或者你可以下载 给你

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

会成功的。

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

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

我的 IIS 7.5不理解 web.config 中的标记 在 VS2010中,这个标签也有下划线。请检查配置文件以准确找到所有带下划线的标签。 我把它放在注释里,错误就消失了。

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

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

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

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

解决方案是进入基本设置 > 连接作为 > 特定的用户-和登录作为一个用户,而不是默认的“通过”

这为我解决了问题。

对我来说,为 iis 重新注册 asp.net 起到了作用,希望这能帮到其他人。

aspnet_regiis.exe -i

有同样的问题,同样的错误代码等。在 Windows8上设置本地网站。经过多次搜索,发现我们丢失了 URL 重写。下载之后一切正常。:)

我也犯了同样的错误。我有一个 IIS 网站。Net Framework 2.0版本,但我的应用程序需要4.0版本。我修改了版本,它起作用了。

发帖只是为了提醒某人是否也有同样的问题。

视窗7

试试这个,

作为管理员运行 cmd。

全部卸载。

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

重新安装 iis 和正常它的工作

阿兰

根据这里和其他地方的答案总结:

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

我把 <customErrors>标签放在 <system.webServer>内而不是 <system.web>内,从而得到了这个错误。在 <customErrors>标签下面有一个小小的波浪形,但是我没有马上注意到。

在 Server 2016,IIS 10,500.19错误上也有同样的问题。我安装了重定向模块,它起作用了。我不知道为什么默认情况下没有包括这一点。

Https://www.iis.net/downloads/microsoft/url-rewrite#additionaldownloads

需要说明的是,IIS 7中的 web.config 看起来可以工作,或者设计成可以工作,但是缺少这个模块会导致非常奇怪和没有帮助的错误。Google 会将你带到一个 Microsoft 页面,该页面坚持说你的站点已经损坏或者你的 web.config 已经损坏。两者似乎都不是。

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

另一种无缘无故导致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-class 错误。

然而,对于完整的 IIS 来说,这是不太可能的。使用完整 IIS 的开发人员/管理员通常不愿意使用 wwwroot,所以它通常保持正确的配置。

但是,在 IIS 快车上. 。

通常情况下,IIS Express“只是起作用”。通常,使用 IISExpress 的开发人员通常不知道它在内部与真正的 IIS 有多么相似。

你可以很容易地发现 IIS Express 有自己的 applicationHost.config 文件,VS 为你创建并管理它(在某种程度上是正确的) ,这让你大开眼界,告诉你它并不像一开始看起来那么简单和点击。

除了该配置文件之外,VisualStudio 还在 Documents文件夹下创建了一个空目录结构。如果我没有记错的话,IISExpress 认为这些文件夹是 你网站的根目录,在这些文件夹上挂载了 虚拟目录虚拟目录和您的代码。

后来,就像 IIS 一样,当 IIS Express 启动时,它 期待这些文件夹存在并检查根 web.config 文件。网站 web.config文件。几乎总是缺少这些 web.config 文件——这没关系,因为您不需要它们——您有您的 * * 应用程序 web.config”,它们与其余内容放在一个虚拟目录中。

现在,第二个有趣的部分是: IISExpress期待,即空目录。它们可以是空的,但它们需要存在。如果它们不存在-你会得到一个500类的错误,告诉你那个路径上的“ web.config”文件不能被访问。

我第一次碰到这个问题是在清理硬盘的时候。我发现‘文件网站’的文件夹里,全是垃圾,我认出了几个我已经不再从事的几年前的项目,都是空的,没有一个文件,所以我全部删除了。一个星期后,我不能运行/调试我当时正在工作的任何网站。错误是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 上有一个按钮“ Create Virtual Directory”。它基本上就是这么做的,所以你可以先尝试一下,但是 IIRC 有时也可以在 applicationHost.config 文件中清除/覆盖/交换配置部分,所以如果你有任何自定义设置的话,要小心那个按钮。

在我的例子中,.NETCoreWindowsHostingBundle 安装有些问题。

我已经安装了它,并在安装后使用(“ net stop was/y”和“ net start w3svc”)重新启动了 IIS,但是如果使用 Error Code 0x8007000d 和 Config Source -1:0: ,我会得到那个500.19错误。

我设法通过修复。NET 核心 Windows 托管包安装和使用上面提到的命令重新启动 IIS。

希望这对谁有帮助!

确保正确启用了所有 IIS 特性。

  • 打开 视窗功能(打开或关闭 Windows 特性)。
  • 向下滚动到 互联网资讯服务

  • 打开 万维网加框下拉框

  • 打开 应用程序开发特点加框下拉框
  • 手动选中所有后续复选框,然后单击 OK

enter image description here

这个可爱的细节错误在2019年仍然存在! 我只是想补充说,如果你的 web.config是有效的和可访问的,它最有可能是一个 抚养费问题

正如 OP 所提到的,它是一个 AJAX模块,正如其他人通常所说的 Rewrite模块。 只要在 web.config 中注意标记所引用的模块和库,因为错误代码 0x8007000d可能是关于 任何依赖的。

在我的情况下,我没有意识到 AspNetCore包丢失,必须安装!真高兴我找到了这个帖子! !

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

    <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 CORS 模块,我们得到了这个令人难以置信的无用异常。对于 Error Code (0x8007000d)和 Config Source (- 1:0:) ,这是完全相同的错误,但是安装 URL 重写模块并没有修复它。

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

要修复它,请安装 IIS CORS 模块

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

我有完全相同的错误消息与 IIS10和 Windows10。我试了这里列出的所有东西(以及其他网页) ,但它没有修复它。解决这个问题的方法是安装。NET 核心托管第二次(我选择“修复”按钮)。

我有100% 的信心这是什么修复它,因为我必须部署相同的网站到其他笔记本电脑也(不同的品牌,但所有的 Windows 10)。同样的错误消息(500.19)发生了,重新安装 bundle 又修复了它。