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


146

这使整个团队疯狂。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记事本中查看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,版本= 1.0.61025.0,区域性=中性,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。他们以开头<!-- 和结尾-->
亚历克斯·巴格诺利尼

woo 这与<httpHandlers>有关
Chuck Le Butt

这是在集成模式下运行吗?如果是这样,请尝试经典模式。
杰里米·麦基

@Alex-我删除了所有评论,但没有帮助。还是)感谢你的建议。
Chuck Le Butt,

@Joe我认为我不会发布整个web.config。可能不是明智的……:-/
Chuck Le Butt

Answers:


263

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

您可以使用Microsoft Web Platform Installer进行安装。执行它,选择产品,在左侧菜单中选择服务器,然后在列表中找到URL Rewrite并安装它。

或者您可以在这里下载。


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

1
是的...我也是,我有.net 3.5,因此已经包含了ajax,但没有重写。
WildJoe 2011年


5
4年了,这仍然是一个问题。错误绝对没有提供问题根源的任何线索。我也将现有的解决方案移到了尚未安装该模块的新服务器上,这只是偶然地我偶然发现了这个答案,所以多谢我拔头发!
ProNotion

4
问题在Server 2016上仍然存在,没有要安装的功能/模块显示“ URL Rewrite”。您必须使用安装它,然后我的网站才能正常工作(或至少停止发出该问题)。
罗布

41

在一台新机器上进行了一天的战斗之后,我遇到了以下链接。我缺少重写模块。这样就解决了所有问题。

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

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


1
+1。我从TFS抓取到的web.config <rewrite>带有标签,但是没有安装urlrewrite。我评论了这些<rewrite>内容,并立即编译并加载了我的网站。
皮特

1
我花了一个小时才记得我在网站上使用过重写。我希望微软有一个更好的编译器错误消息系统。如果能看到web.config的确切行,我会在几分钟内解决问题。
dvdmn

如何在Visual Studio for IIS Express中安装Url Rewrite?
迪马

40

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

而已!


1
谢谢!AJAX扩展就是问题所在。我评论了这一部分,因为AJAX现在已内置到3.5中
jdiaz

1
看起来Microsoft打破了配置ASP.NET AJAX的第一个链接。
罗伯·索伯斯

1
找到了旧内容的一面镜子。如此令人讨厌的MS文档消失得如此频繁。
Chuck Le Butt 2010年

4
您的答案表明此错误仅适用于Ajax,但它也适用于urlrewrite,这意味着该错误很可能仅涉及依赖于不可用模块的任何建议。
2013年

@Chuck,“我感觉像洛基”是什么意思?
Pacerier,2015年

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


12

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


伙计,您节省了我很多时间……不错!
PhillyNJ 2013年

类似地,此错误消息完全没有帮助!
Ken Keenan'9

8

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

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


此答案对于设置Umbraco CMS期间的500.19错误也有效。
aron.lakatos

4

对我来说,重新注册iis的asp.net可以解决问题。希望可以帮助其他人。

aspnet_regiis.exe -i

4

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

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

4

没有明显原因的另一种获得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文件中清除/覆盖/交换配置部分,因此,如果在该按钮上有任何自定义设置,请务必小心。


3

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

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

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

希望这对某人有帮助!


1
这也对我有用, 这是一个有关安装.NET Core Windows Server Hosting捆绑包的MSDN博客:blogs.msdn.microsoft.com/rohithrajan/2018/03/13/…这是直接链接到下载的链接:aka。 ms / dotnetcore-2-windowshosting
riverswb

3

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

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

以我为例,我没有意识到AspNetCore捆绑包丢失了,必须安装!很高兴我找到了这个帖子!


2

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

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

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

我已经在32位Windows XP盒子上启动了这个应用程序,现在我正在64位Windows 7盒子上运行它。

因此希望这对其他人有帮助。


2

我的IIS 7.5无法理解web.config中的标记。在VS 2010中,该标记也带有下划线。准确检查您的配置文件以找到所有带下划线的标记。我把它放在注释中,错误消失了。


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>

这将起作用。


2

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

如果某人可能遇到相同的问题,则发帖提醒。


2

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

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

  • 打开“ 万维网加号”框下拉列表

  • 打开应用程序开发功能加框下拉
  • 手动选中所有后续复选框,然后单击“确定”。

在此处输入图片说明


1
我刚刚使用就地升级方法重新安装了Windows 10,或者已经取消选中其中一些框,或者已取消选中重新安装。相关的错误代码0x80070021出现在500.19页面上。
安德鲁·莫顿

2

以下配置是导致我出现问题的原因:

    <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中可以正常工作。


1
如果安装IIS URL重写模块,则可以将重写规则保留在IIS中。它位于iis.net/downloads/microsoft/url-rewrite
Toby Artisan

1

我在Windows 7中有同样的问题。

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

这为我解决了这个问题。


1

Windows 7的

试试这个,

以管理员身份运行cmd。

取消所有iis。

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

重新安装IIS并正常工作

阿兰


1

我通过将<customErrors>标签放在<system.webServer>而不是<system.web>它所属的位置而收到此错误。<customErrors>标签下有一些花样,但我没有立即注意到。


1

顶部答案类似,由于缺少IIS CORS模块,我们得到了这个极其无助的异常。这是与错误代码(0x8007000d)和配置源(-1:0 :)完全相同的错误,但是安装URL重写模块并不能解决它。

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

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


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.