152

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

24 回答 24

276

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

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

或者你可以在这里下载。

于 2010-08-04T16:19:47.663 回答
42

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

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

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

于 2011-09-22T07:47:25.873 回答
41

啊哈!我解决了这个问题!天哪,对于像我这样的 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/
更新微软似乎已经删除了上面的页面:(

而已!

于 2009-11-27T18:03:48.453 回答
16

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

于 2016-12-21T16:37:01.783 回答
12

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

于 2013-09-10T09:06:43.133 回答
8

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

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

于 2010-11-16T16:06:13.680 回答
5

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

于 2017-05-20T08:06:51.397 回答
4

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

aspnet_regiis.exe -i
于 2012-12-18T16:50:21.913 回答
4

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

  1. 检查应用程序池的 .NET 版本(例如 2.0 与 4.0)
  2. 检查是否安装了所有 IIS 引用的模块。在这种情况下,它是 AJAX 扩展(现在可能不是这种情况),但URL 重写是一种常见的扩展。
于 2015-08-26T22:02:33.510 回答
4

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

    <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 中运行良好。

于 2019-10-11T07:27:11.677 回答
3

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

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

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

希望这对某人有帮助!

于 2018-07-19T13:31:29.490 回答
3

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

于 2020-08-11T11:53:43.923 回答
3

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

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

就我而言,我没有意识到AspNetCore捆绑包丢失并且必须安装!很高兴我找到了这篇文章!!

于 2019-03-13T01:03:43.213 回答
3

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

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

于 2020-10-06T13:22:08.293 回答
2

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

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

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

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

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

于 2010-03-09T00:36:06.480 回答
2

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

这将起作用。

于 2010-10-14T06:30:30.537 回答
2

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

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

于 2014-07-22T11:33:20.560 回答
2

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

于 2011-04-19T07:51:57.633 回答
2

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

  • 打开Windows 功能(打开或关闭 Windows 功能)。
  • 向下滚动到Internet 信息服务

  • 打开万维网加号框下拉

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

在此处输入图像描述

于 2018-11-08T19:33:10.160 回答
1

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

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

这为我解决了这个问题。

于 2012-07-02T23:05:26.717 回答
1

Windows 7的

尝试这个,

以管理员身份运行 cmd。

卸载所有 iis。

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

重新安装iis并正常工作

阿兰

于 2015-03-22T17:45:56.657 回答
1

我把<customErrors>标签放在里面<system.webServer>而不是<system.web>它所属的地方得到了这个错误。标签下面有一个小波浪线,<customErrors>但我没有马上注意到。

于 2016-04-14T15:34:54.487 回答
1

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

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

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

于 2020-05-18T08:40:30.207 回答
0

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

于 2019-11-22T20:23:06.790 回答