这让整个团队都发疯了。 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
中的所有评论。它们以 <!--
开头并以 -->
结尾。
我有这些确切的症状,我的问题与彼得的问题相似。正在新服务器上设置现有项目。我的项目引用了 IIS7 URL 重写模块,但尚未在新服务器上安装该模块。安装它解决了我的问题。
您可以使用 Microsoft Web 平台安装程序来安装它。执行它,选择产品,在左侧菜单中选择服务器并在列表中找到 URL Rewrite 并安装它。
或者您可以下载它here。
啊哈!我解决了这个问题!天哪,对于像我这样的 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/ 更新:微软似乎已经删除了上面的页面:(
而已!
在一台新机器上与此作战一天后,我发现了以下链接。我错过了重写模块。这解决了一切。
http://forums.iis.net/t/1176834.aspx
http://learn.iis.net/page.aspx/460/using-the-url-rewrite-module/
<rewrite>
标签,但我没有安装 urlrewrite。我注释掉了 <rewrite>
的内容,我的网站立即编译并加载。
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
遇到与上述相同的问题,相同的错误代码等。在 Windows 8 上设置本地网站。经过大量搜索,发现我们缺少 URL 重写。下载后一切正常。 :)
我只是添加了一个答案,因为我花了几个小时试图解决相同的症状(但不同的问题):
一个可能的原因是 64 位应用程序池中的 x86 dll,解决方案是在应用程序池设置中启用 32 位应用程序。
另一种无缘无故获得 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 文件中清除/覆盖/交换配置部分,所以如果你有任何自定义设置,请小心该按钮。
对我来说,为 iis 重新注册 asp.net 就可以了。希望这对其他人有帮助。
aspnet_regiis.exe -i
根据此处和其他地方的答案进行总结:
检查应用程序池的 .NET 版本(例如 2.0 与 4.0) 检查是否安装了所有 IIS 引用的模块。在这种情况下,它是 AJAX 扩展(现在可能不是这种情况),但 URL 重写是一种常见的扩展。
以下配置是我的问题的原因:
<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 中运行良好。
就我而言,.NET Core Windows Hosting Bundle 安装有问题。
我已经安装并在安装后使用(“net stop is /y”和“net start w3svc”)重新启动了IIS,但我会收到错误代码0x8007000d和配置源-1:0:的500.19错误。
我设法通过修复 .NET Core Windows Hosting Bundle 安装并使用我上面提到的命令重新启动 IIS 来解决这个问题。
希望这对某人有帮助!
这个可爱的详细错误在 2019 年仍然存在!我只想补充一点,如果您的 web.config
有效且可访问,则很可能是依赖性问题。
正如 OP 所提到的,它是一个 AJAX
模块,而其他人通常是 Rewrite
模块。只需留意您的 web.config 中的标签所引用的模块和库,因为错误代码 0x8007000d 可能与 任何依赖项 有关。
在我的情况下,我没有意识到 AspNetCore
包丢失并且必须安装!很高兴我找到了这篇文章!!
此错误与 web.config 文件有关。当 web.config 不正确或使用 IIS 中不可用的某些功能时,就会出现此问题。就我而言,我忘记安装 URLRewrite 模块并在 web.config 中引用它。花了一些时间才找到根本原因。我开始一一删除部分并检查,然后我才能够找出实际问题。
我在 IIS10 和 Windows 10 上收到了完全相同的错误消息。我尝试了此处列出的所有内容(以及其他互联网页面),但没有修复它。解决问题的方法是再次安装 .NET Core Hosting(我选择“修复”按钮)。
我 100% 确信这是修复它的原因,因为我也必须将相同的网站部署到其他笔记本电脑(不同品牌,但都是 Windows 10)。出现相同的错误消息 (500.19) 并重新安装捆绑包再次修复它。
这可能相关也可能不相关....我从上面提到的相同错误开始,开始使用谷歌搜索,进行更改,获取新错误,无限循环。
该错误使我受到的更改与服务器管理部分下的 IIS 管理器中的功能委派混淆了。对不起,我不记得我改变了哪一个,但谷歌搜索可能会有所帮助。
这让我超越了第一个错误,进入了一个全新的其他错误流,有些完全荒谬。 (在虚拟目录下运行时会出现一个错误,将其转换为应用程序会产生另一个错误,等等)。最终解决这一系列错误的是:IIS manager, Application Pools, DefaultAppPool, Enable 32-Bit applications=True
我在 32 位 windows xp 机器上启动了这个应用程序,现在我在 64 位 Windows 7 机器上运行它。
所以希望这对其他人有帮助。
我的 IIS 7.5 不理解 web.config 中的标签在 VS 2010 中,它也在该标签下划线。检查您的配置文件是否准确以找到所有带下划线的标签。我把它放在评论中,错误就消失了。
在 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>
这将起作用。
我有同样的错误。我有一个 .net 框架版本 2.0 的 IIS 站点,但我的应用程序需要 4.0。我更改了版本,它工作。
如果有人可能有同样的问题,张贴只是作为提醒。
确保正确启用所有 IIS 功能。
打开 Windows 功能(打开或关闭 Windows 功能)。
向下滚动到 Internet 信息服务
打开万维网加号框下拉
打开应用程序开发功能加框下拉
手动勾选所有后续复选框,然后点击确定
https://i.stack.imgur.com/bdIVA.png
我在 Windows 7 中遇到了同样的问题。
解决方案是转到基本设置 > 连接身份 > 特定用户 - 并以用户身份登录,而不是默认的“直通”
这为我解决了这个问题。
Windows 7的
尝试这个,
以管理员身份运行 cmd。
卸载所有 iis。
start /w pkgmgr.exe /uu:IIS-WebServerRole;WAS-WindowsActivationService
重新安装iis并正常工作
阿兰
我通过将 <customErrors>
标记放在 <system.webServer>
而不是它所属的 <system.web>
内得到了这个错误。 <customErrors>
标记下有一个小波浪线,但我没有立即注意到它。
与 top answer 类似,由于缺少 IIS CORS 模块,我们得到了这个非常无用的异常。与错误代码 (0x8007000d) 和配置源 (-1: 0:) 完全相同的错误,但安装 URL 重写模块并没有解决它。
我们最近更新了 web.config,以便为一些需要它的开发人员启用 CORS,但没想到所有开发人员都需要安装 IIS CORS 模块。不幸的是,它看起来是必需的。
要修复它,请安装 IIS CORS module from here。
如果您要部署 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