Web应用程序问题(web.config错误)使用IIS7.5和ASP.NET v2的HTTP 500.19
这是整个团队疯狂。 IIS或我们的Web服务器必须有一些简单的错误configuration部分,但每当我们尝试在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也不会引发任何语法错误。 我假设它一定是我的一些糟糕的configuration…?
有谁知道我在哪里可以find关于错误的更多信息? 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
这里是我们web.Config麻烦的一点点 …我希望这可以帮助别人find我们的问题!
<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>
我有这些确切的症状,我的问题类似于彼得的问题。 在新的服务器上build立一个现有的项目。 我的项目引用了IIS7 URL重写模块,但尚未在新服务器上安装。 安装它解决了我的问题。
您可以使用Microsoft Web平台安装程序来安装它。 执行它,select产品 ,在左侧菜单中select服务器,并在列表中findURL重写并安装它。
或者你可以在这里下载。
在一台新机器上与这一天搏斗后,我遇到以下链接。 我错过了重写模块。 这固定了一切。
http://forums.iis.net/t/1176834.aspx
http://learn.iis.net/page.aspx/460/using-the-url-rewrite-module/
啊哈! 我打败了这个问题! 我的天啊,对于像我这样有IIS经验的人来说,这是一个野兽。 我真的以为我会整个周末都在修理它。
这是为了解决这个邪恶问题的任何人的解决scheme。
首先要注意的是:如果您希望这是您的解决scheme,请确保您具有相同的错误代码( 0x8007000d )和configuration源( -1:0 :) 。 如果没有,这不是你的解决scheme。
接下来要注意的是: AJAX没有正确安装在你的web.config中!
通过以下指南解决这个问题:
http://www.asp.net/AJAX/documentation/live/ConfiguringASPNETAJAX.aspx
然后,通过以下链接在生产服务器上安装AJAX 1.0扩展 :
http://www.asp.net/ajax/downloads/archive/
更新 : 微软似乎已经删除了上面的页面:(
而已!
有上面的同样的问题,相同的错误代码等在Windows 8上设置本地网站。经过多次search后,发现我们错过了URL重写。 下载后,一切都很好。 🙂
我只是添加一个answear,因为我花了几个小时试图解决相同的症状(但不同的问题):
可能的原因是64位应用程序池中的x86 dll,解决scheme是在应用程序池设置中启用32位应用程序。
对我来说,重新注册asp.net for iis是个窍门。 希望能帮助别人。
aspnet_regiis.exe -i
总结这里和其他地方的答案:
- 检查应用程序池的.NET版本(例如2.0 vs 4.0)
- 检查是否安装了所有IIS引用的模块。 在这种情况下,它是AJAX扩展(可能不是这种情况),但URL重写是一个常见的。
服务器2016,IIS 10,500.19错误,同样的问题。 我安装了redirect模块,它工作。 我不知道为什么这不是默认包含的。
https://www.iis.net/downloads/microsoft/url-rewrite#additionalDownloads
要清楚它看起来像从IIS 7的web.config将工作,或devise工作,但缺乏这个模块给出了真正的奇怪和无益的错误。 谷歌search带你到一个微软的网页,坚持认为您的网站已损坏或您的web.config已损坏。 似乎也不是这种情况。
无用的页面在这里: https : //support.microsoft.com/en-us/kb/942055
这可能或不相关….我开始与上面提到的相同的错误,开始googlesearch,做出改变,获得新的错误,无止境的循环。
由于该错误导致的更改与服务器的“pipe理”部分下的IISpipe理器中的function委派function混淆了。 对不起,我不记得我改变了哪一个,但是使用谷歌search可能会有所帮助。
这让我把第一个错误变成了另一个全新的错误,有些完全没有意义。 (我会得到一个虚拟目录下运行时出现错误,将其转换为应用程序产生了另一个错误,etec等)。 终于解决了这一系列错误的是:IISpipe理器,应用程序池,DefaultAppPool,启用32位应用程序= True
我已经在一个32位的Windows XP中启动了这个应用程序,现在我正在64位的Windows 7上运行它。
所以希望这可以帮助别人。
我的IIS 7.5不理解web.config中的标签在VS 2010中,它也是下划线标签。 检查你的configuration文件准确find所有带下划线的标签。 我把它放在评论和错误消失。
注释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>
这将工作。
我有同样的错误。 我有一个与.net框架2.0版的IIS网站,但我的应用程序需要4.0。 我改变了版本,它的工作。
只是提醒,如果有人可能有同样的问题。
我在Windows 7中遇到了同样的问题。
解决scheme是转到基本设置>连接为>特定用户 – 并以用户身份login,而不是默认的“传递”
这为我解决了这个问题。
Windows 7的
尝试这个,
以pipe理员身份运行cmd。
取消所有的iis。
start /w pkgmgr.exe /uu:IIS-WebServerRole;WAS-WindowsActivationService
重新安装iis,并且正常工作
阿兰
通过将<customErrors>
标记放在<system.webServer>
而不是<system.web>
中,我得到了这个错误。 在<customErrors>
标签下有一个小小的弯曲,但我没有马上注意到它。
获取500.19 err的另一种方式没有明显的原因 – 缺less目录和/或他们的权限损坏。
在这个问题的情况下,我相信这个问题要求完整的IIS版本。 我认为这是因为这一行:
Config File \\?\E:\wwwroot\web.config
IIS安装程序通常为您创buildwwwroot
,这是所有网站的默认根文件夹和虚拟目录的装入点。 它总是存在,所以没问题,你通常不关心这一点。
由于web.config文件是分层的,你可以在那里放置一个主web.config文件,并有一些根设置,所有的网站都会inheritance它。 IIS检查该文件是否存在并尝试加载它。
不过,第一个有趣的部分:
如果您的IIS安装正确,该目录将存在。 如果不存在,你将会得到500级的错误。 但是,如果使用文件/目录权限(尤其是“高级”权限),实际上可能会意外拒绝 IIS服务帐户扫描/读取此目录的内容。 如果IIS无法检查wwwroot \ web.config是否存在,或者IIS存在,IIS无法打开并读取它 – bam – 500级错误。
但是,对于完整的IIS,这是不太可能的。 使用完整IIS的开发人员/pipe理员通常不愿意使用wwwroot
因此通常保持正确的configuration。
但是,在IIS Express上
通常,IIS Express“正常工作”。 通常情况下,使用IIS Express的开发人员通常不知道在内部有多less类似于真正的IIS。
你可以很容易地发现,IIS Express有自己的applicationHost.config文件,VS为你创build和pipe理它(正确地说,在某种程度上),这种令人大开眼界的事情告诉你,这不是那么简单,并按下,因为它似乎在第一次。
除了该configuration文件外,VisualStudio还会在您的Documents
文件夹下创build一个空目录结构。 如果我没有记错,IIS Express会将这些文件夹视为您的网站的根目录,并在其上装载您的代码的虚拟目录 。
后来,就像IIS一样,当IIS Express启动时,它期望这些文件夹存在,并在那里检查根web.config文件。 该网站的web.config文件。 几乎总是这些web.config文件丢失了 – 这是因为你不需要它们 – 你有你的**应用程序web.config“,它们被放置在一个虚拟目录中。
现在,第二个有趣的部分是:IIS Express 期望空目录。 他们可以是空的,但他们需要存在。 如果他们不存在 – 你会得到一个500级的错误告诉你,该path的“web.config”文件不能被访问。
我第一次碰到这个问题的时候是我清理硬盘的时候。 我发现'文件\网站'文件夹,充满了垃圾,我认识了几年岁的项目,我不再工作,所有空的,而不是一个单一的文件,所以我把它全部删除。 一个星期后 – 巴姆 – 我不能运行/debugging我目前正在工作的任何网站。 错误是500.19,无法读取configuration文件。
因此,如果您使用IIS Express并查看500级错误来了解读取configuration,请仔细检查错误消息并阅读所有提到的path。 如果您看到以下任何内容:
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上有一个button“创build虚拟目录”。 它本质上是做这件事,所以你可以先尝试它,但是IIRC它也可以在applicationHost.config文件中清除/覆盖/交换configuration部分,所以如果你有任何自定义的设置,那么要小心这个button。