代码之家  ›  专栏  ›  技术社区  ›  Chuck Le Butt

Web应用程序问题(web.config错误)HTTP 500.19 with iis7.5 and asp.net v2

  •  131
  • Chuck Le Butt  · 技术社区  · 15 年前

    这让整个团队都疯了。必须有一些简单的错误配置的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 .

    根据微软的说法,代码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”(见上面第三行)。删除这个属性会使它抱怨同一行没有所需的“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>
    
    18 回复  |  直到 6 年前
        1
  •  244
  •   David Ferenczy Rogožan Hugo L.M    9 年前

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

    你可以使用 Microsoft Web平台安装程序 安装它。执行,选择 产品 ,在左侧菜单中选择 服务器 找到 伪静态 在列表中并安装它。

    或者你可以下载它 here .

        2
  •  40
  •   kerrydewhirst    13 年前

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

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

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

        3
  •  38
  •   Chuck Le Butt    8 年前

    啊哈!我克服了这个问题!天哪,对于像我这样经验有限的人来说,这是一头野兽。我真的以为我整个周末都在修理它。

    这是解决任何人谁来过这个邪恶的问题。

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

    接下来要注意的是: web.config中没有正确安装Ajax!

    通过遵循此指南来解决此问题:
    http://www.asp.net/AJAX/documentation/live/ConfiguringASPNETAJAX.aspx

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

    http://www.asp.net/ajax/downloads/archive/
    更新 以下内容: 微软似乎删除了上面的页面:(

    就是这样!

        4
  •  12
  •   The Edge    11 年前

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

        5
  •  10
  •   Rob    8 年前

    服务器2016上的相同问题,IIS 10 500.19错误。我安装了重定向模块,它工作了。我不知道为什么默认情况下不包括这个。

    https://www.iis.net/downloads/microsoft/url-rewrite#additionalDownloads

    很明显,看起来来自IIS7的web.config可以工作,或者设计为可以工作,但是缺少这个模块会导致非常奇怪和无用的错误。googling会把你带到一个微软页面,它坚持认为你的站点被破坏或者web.config被破坏。似乎情况并非如此。

    这是一个无用的页面: https://support.microsoft.com/en-us/kb/942055

        6
  •  7
  •   Guillaume86    14 年前

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

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

        7
  •  4
  •   ctc    12 年前

    对我来说,为IIS重新注册ASP.NET就做到了。希望这能帮助别人。

    aspnet_regiis.exe -i
    
        8
  •  3
  •   Mark Sowul    9 年前

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

    1. 检查应用程序池的.NET版本(例如2.0与4.0)
    2. 检查是否已安装所有引用了IIS的模块。在本例中,它是Ajax扩展(现在可能不是这样),但是 伪静态 是很普通的。
        9
  •  3
  •   quetzalcoatl    8 年前

    另一种无明显原因获得500.19错误的方法是丢失目录和/或破坏对它们的权限。

    在这个问题的情况下,我相信这个问题是关于完整的IIS版本的。我认为这是因为这句话:

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

    IIS安装程序通常创建 wwwroot 对于您,这是所有网站的默认根文件夹和虚拟目录的装入点。它总是存在的,所以没问题,你通常不太在乎。

    因为web.config文件是分层的,所以可以在那里放置一个web.config主文件,并在那里设置一些根目录,所有站点都将继承它。IIS检查该文件是否存在并尝试加载它。

    然而,第一个有趣的部分:

    如果您正确安装了IIS,此目录将存在。如果它不存在,您将得到500个类错误。但是,如果您使用文件/目录权限(尤其是“高级”权限)进行播放,实际上可能会意外 否认 来自扫描/读取此目录内容的IIS服务帐户。如果IIS无法检查该wwwroot\web.config是否存在,或者该wwwroot\web.config是否存在,并且IIS无法打开和读取该wwwroot\web.config-BAM-500类错误。

    然而,对于完整的IIS,这是非常不可能的。使用完整的IIS的开发人员/管理员通常不愿意玩 网站根目录 所以它通常保持正确的配置。

    但是,在IIS Express上..

    通常,IIsExpress“只起作用”。通常,使用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”文件夹里满是垃圾,我认出几年前我不再工作的项目,都是空的,不是一个文件,所以我把它全部删除了。一周后,我无法运行/调试我目前正在工作的任何站点。错误为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工作帐户可以遍历和读取它们,如果您注意到任何错误,可能就是这样。

    btw.在VisualStudio中,在ProjectProperties/Web上有一个按钮“创建虚拟目录”。它本质上就是这样做的,所以您可以先尝试一下,但是iirc它也可以在applicationhost.config文件中清除/覆盖/交换配置部分,所以如果您有任何自定义设置,请小心使用该按钮。

        10
  •  2
  •   tbone    15 年前

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

    由于这个错误,我所做的更改破坏了服务器管理部分下的IIS管理器中的功能委派。很抱歉,我记不起我换了哪一个,但谷歌可能会有所帮助。

    这使我越过了第一个错误,进入了一个全新的误区,有些完全是胡说八道。(在虚拟目录下运行时,我会得到一个错误,将其转换为应用程序时会产生另一个错误,如etec等)。最终解决这一系列错误的是: IIS管理器,应用程序池,默认应用程序池,启用32位应用程序=真

    我在32位的WindowsXP设备上启动了这个应用程序,现在我在64位的Windows7设备上运行它。

    希望这能帮助其他人。

        11
  •  2
  •   Konstantin    14 年前

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

        12
  •  2
  •   stealthyninja michkra    13 年前

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

    这行得通。

        13
  •  2
  •   Joel Peltonen    10 年前

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

    如果有人可能有同样的问题,发布邮件作为提醒。

        14
  •  2
  •   Kappacake    6 年前

    在我的例子中,托管捆绑包的.NET核心Windows有问题。

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

    我通过修复托管捆绑安装的.NET核心Windows并使用上面提到的命令重新启动IIS来解决这个问题。

    希望这能帮助别人!

        15
  •  1
  •   BuzzCloudAU    12 年前

    我在Windows7中也遇到过同样的问题。

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

    这解决了我的问题。

        16
  •  1
  •   Alan10977    10 年前

    视窗7

    试试这个,

    以admin身份运行cmd。

    卸载所有IIS。

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

    重新安装IIS并正常工作

    阿兰

        17
  •  1
  •   foldinglettuce    9 年前

    我通过将 <customErrors> 标签内 <system.webServer> 而不是 <system.web> 它所属的地方。有一点蠕动在下面 <客户错误> 但我没有马上注意到。

        18
  •  1
  •   Colin    6 年前

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

    • 正常开放 Windows功能 (打开或关闭Windows功能)。
    • 向下滚动至 互联网信息服务

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

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

    enter image description here