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

Chu*_*utt 138 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: 
Run Code Online (Sandbox Code Playgroud)

该计算机正在运行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>
Run Code Online (Sandbox Code Playgroud)

注:如果我删除线之间<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>
Run Code Online (Sandbox Code Playgroud)

看看这些行,很明显问题已在同一<system.webServer>标签内进一步迁移到<handlers>标签.

新错误也更明确,并且特别抱怨它无法识别属性"validate"(如上面第三行所示).删除此属性然后使其抱怨相同的行没有所需的"name"属性.添加此属性然后会出现ASP.NET错误...

无法加载文件或程序集'System.web.Extensions,Version = 1.0.61025.0,Culture = neutral,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>
Run Code Online (Sandbox Code Playgroud)

JJM*_*pls 254

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

您可以使用Microsoft Web Platform Installer进行安装.执行它,选择Products,在左侧菜单中选择Server并在列表中找到URL Rewrite并安装它.

或者你可以在这里下载.

  • 4年过去了,这仍然是一个问题.错误中绝对没有任何内容可以解决问题的根源.我也把一个现有的解决方案转移到一个尚未安装该模块的新服务器上,这只是偶然的我偶然发现了这个答案所以感谢一堆,因为我正在撕裂我的头发! (5认同)
  • Server 2016仍然存在问题,没有要安装的功能/模块"URL Rewrite".您必须使用它来安装它,然后我的网站工作(或至少停止提供该问题). (4认同)
  • [IIS网站上提供了IIS URL重写模块](http://www.iis.net/download/urlrewrite). (3认同)
  • 8年过去了,这仍然是一个问题。感谢@JJMpls 的精彩回答 (3认同)
  • >我有这些确切的症状,我的问题与彼得的相似.是否在新服务器上设置现有项目.我的项目引用了IIS7 URL重写模块,但尚未在新服务器上安装.安装它解决了我的问题.谢谢,DJjeffJ.为我修好了.未安装dev服务器上的URL reirte模块. (2认同)

Chu*_*utt 40

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

而已!

  • 您的回答表明此错误仅适用于Ajax,但它也适用于urlrewrite,这意味着错误可能只是指任何依赖于不可用模块的建议. (4认同)
  • 谢谢!AJAX 扩展是问题所在。由于 AJAX 现在已内置到 3.5 中,因此我将该部分注释掉了 (2认同)
  • 看起来微软打破了配置 ASP.NET AJAX 的第一个链接。 (2认同)
  • 找到了旧内容的镜像。MS 文档如此频繁地消失的方式如此令人讨厌。 (2认同)

小智 40

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

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

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

  • +1。我从 TFS 获取的 web.config 有 `&lt;rewrite&gt;` 标签,但我没有安装 urlrewrite。我注释掉了 `&lt;rewrite&gt;` 的内容,我的站点立即编译并加载。 (2认同)
  • 我花了一个小时才记得我在网站中使用了重写。我希望微软有一个更好的编译器错误消息系统。如果我能看到 web.config 的确切行,我会在几分钟内解决问题。 (2认同)

Rob*_*Rob 13

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重写.下载后一切都很好.:)


Gui*_*e86 8

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

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


Kyl*_*yle 6

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

    <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>
Run Code Online (Sandbox Code Playgroud)

注意:我删除了此部分以进行本地测试,因为它在 Azure 中运行良好。

  • 如果安装 IIS URL 重写模块,则可以在 IIS 中保留重写规则。它位于 https://www.iis.net/downloads/microsoft/url-rewrite (2认同)

小智 6

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


ctc*_*ctc 5

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

aspnet_regiis.exe -i
Run Code Online (Sandbox Code Playgroud)


Mar*_*wul 5

根据此处和其他地方的答案总结一下:

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


que*_*atl 5

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

对于这个问题,我相信这个问题会询问完整的 IIS 版本。我认为这是因为这一行:

Config File         \\?\E:\wwwroot\web.config
Run Code Online (Sandbox Code Playgroud)

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”文件夹里满是垃圾,我认出了几个我不再从事的项目,都是空的,没有一个文件,所以我把它全部删除了。一周后 - 砰 - 我无法运行/调试我目前正在工作的任何站点。错误是 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..
Run Code Online (Sandbox Code Playgroud)

转到错误指示的确切位置,确保这些文件夹存在,确保 IIS 工作人员帐户可以遍历并读取它们,如果您发现有任何问题,也许就是那个。

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


dem*_*ron 5

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

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

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

希望这对某人有帮助!

  • 这也对我有用,这里有一个关于安装 .NET Core Windows Server 托管捆绑包的 MSDN 博客:https://blogs.msdn.microsoft.com/rohithrajan/2018/03/13/500-19-error-or- 502-5-error-when-hosting-asp-net-core-2-application-inside-iis/ 这是直接下载的链接:https://aka.ms/dotnetcore-2-windowshosting (2认同)