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

时间:2009-11-27 13:08:12

标签: asp.net iis web-applications web-config iis-7.5

这使整个团队疯狂。 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应用程序。

根据Microsoft的说法,代码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>(和中间的行)以停止上述错误。

但是,一旦我完成了这个操作,我就会收到 new 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”(如上面第三行所示)。删除此属性然后使其抱怨相同的行没有所需的“name”属性。添加此属性会显示 ASP.NET 错误...

  

无法加载文件或程序集   “System.Web.Extensions程序,   版本= 1.0.61025.0,文化=中立,   PublicKeyToken = f2cb5667dc123a56'或   其中一个依赖项。系统   找不到指定的文件。

显然,我认为这些新错误只是因为我首先删除了 <httpHandlers> 标记 - 应用程序显然需要它们 - 所以问题仍然存在:为什么这些标签会在IIS中首先出现错误???

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

再次感谢您的帮助。

WEB.CONFIG

这是我们 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>

24 个答案:

答案 0 :(得分:247)

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

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

或者您可以下载here

答案 1 :(得分:40)

在新机器上与这一天斗争了一天后,我遇到了以下链接。我错过了重写模块。这解决了一切。

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

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

答案 2 :(得分:39)

啊哈!我打败了这个问题!我的上帝,对于像我这样有限的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/
  更新 Microsoft似乎已删除了上述页面:(

就是这样!

答案 3 :(得分:12)

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

答案 4 :(得分:11)

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

答案 5 :(得分:8)

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

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

答案 6 :(得分:4)

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

aspnet_regiis.exe -i

答案 7 :(得分:3)

另一种获得500.19错误的方法是 - 缺少目录和/或破坏它们的权限。

如果遇到这个问题,我相信这个问题会询问完整的IIS版本。我假设这是因为这一行:

Config File         \\?\E:\wwwroot\web.config

IIS安装程序通常会为您创建wwwroot,这是所有网站的默认根文件夹和虚拟目录的挂载点。它总是存在,所以没问题,你通常不关心它。

由于web.config文件是分层的,你可以在那里放置一个主web.config文件并在那里有一些root设置,所有站点都将继承它。 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启动时,期望这些文件夹存在并检查那里的root web.config文件。 站点web.config 文件。几乎总是,这些web.config文件丢失了 - 这没关系,因为你不需要它们 - 你有你的**应用程序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文件中清除/覆盖/交换配置部分,所以如果你有任何自定义设置,请小心使用该按钮。

答案 8 :(得分:3)

总结基于这里和其他地方的答案:

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

答案 9 :(得分:2)

这可能与否有关....我从上面提到的相同错误,开始谷歌搜索,进行更改,获得新错误,无限循环开始。

由于该错误而导致的更改是在服务器的“管理”部分下的IIS管理器中的功能委派中弄乱了。对不起,我不记得我改变了哪一个,但谷歌搜索可能会有所帮助。

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

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

所以希望这有助于其他人。

答案 10 :(得分:2)

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

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

我设法通过修复.NET Core Windows Hosting Bundle软件包并使用上述命令重新启动IIS来解决此问题。

希望这对某人有帮助!

答案 11 :(得分:2)

我有同样的错误。我有一个.net框架版本2.0的IIS站点,但我的应用程序需要4.0。我改变了版本并且有效。

如果有人可能遇到同样的问题,请发帖提醒。

答案 12 :(得分:2)

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

答案 13 :(得分: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>

这样可行。

答案 14 :(得分:1)

Windows 7

试试这个,

以管理员身份运行cmd

取消所有iis。

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

重新安装iis,并正常工作

阿兰

答案 15 :(得分:1)

我将<customErrors>标记放在<system.webServer>内而不是<system.web>所属的位置,从而出现此错误。 <customErrors>标签下有一点点波形,但我没有马上注意到它。

答案 16 :(得分:1)

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

解决方案是进入基本设置&gt;连接为&gt;特定用户 - 并以用户身份登录,而不是默认的“传递”

这解决了我的问题。

答案 17 :(得分:1)

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

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

  • 打开万维网加框下拉框

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

enter image description here

答案 18 :(得分:1)

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

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

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

答案 19 :(得分:1)

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

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

要修复此问题,请安装IIS CORS module from here

答案 20 :(得分:1)

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

答案 21 :(得分:0)

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

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

答案 22 :(得分: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

答案 23 :(得分:0)

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

我100%确信这是解决问题的方法,因为我还必须将相同的网站也部署到其他笔记本电脑上(不同品牌,但所有Windows 10)。发生相同的错误消息(500.19),然后重新安装捆绑软件再次将其修复。