无法访问请求的页面,因为该页面的相关配置数据无效错误


478

我想使用IIS管理器在IIS上上传自己的asp.net网站。但是当我这样做时,出现以下错误

HTTP错误500.19-内部服务器错误无法访问请求的页面,因为该页面的相关配置数据无效

模块 IIS Web核心
通知未知的
处理程序尚未确定
错误代码 0x80070005
配置错误由于权限不足而无法读取配置文件
配置文件 \\?\C:\Users\Yasso\Documents\Visual Studio 2008\WebSites\WebSite5\web.config

我多次搜索该错误的解决方案,但是没有一个解决方案可以解决该错误。

我的IUSR帐户有问题。我看不到该帐户在“组或用户名”的属性中web.config

问题是什么?


3
通过Subversion还原了一些更改后,我遇到了这个问题(尽管这可能是巧合)。我注意到该Web.config文件的ACL与目录中的其他文件不同,并且它不是从其父目录继承而来的。我启用了ACL继承,一切恢复正常。
ta.speot.is 2012年

1
我的解决方案略有不同。在某些Windows Server 2008计算机上,需要在站点文件夹安全权限内授予对“ IIS_IUSRS”组的访问权限,而不是对“ IUSR”用户的访问权限。确保转到机器的位置。
MacGyver 2013年

7
我将站点移动到未安装IIS Url重写模块的服务器时遇到了这个问题。
ScottE 2015年

1
如果您已重命名服务器,则可能会发生这种情况。我自己完成了此操作-最终不得不进入(Windows Server 2012 R2)并重新添加IIS APPPOOL \ SiteName ...,然后100%修复了此问题。
迈克尔·坎贝尔

2
如果您是不
熟悉

Answers:


178

该消息表明您的配置文件在某种程度上已损坏。但是它也说它实际上不能访问配置文件。因此,我将忽略有关损坏/有效性不足的原始消息,因为这很可能只是由于缺乏授权而无法读取文件的结果。

它无法读取配置文件的原因是因为运行Web应用程序的进程无权访问文件/目录。因此,您需要为运行Web应用程序的进程赋予这些权限。

访问权限应该非常简单,即至少为Read,并且取决于您的应用程序,可能为Write

在上面,您提到IUSR等不在属性中web.config。如果那意味着您没有在文件的安全性选项卡中列出IUSR,那是一件好事。不想给IUSR任何对web.config的许可。IUSR角色是一个匿名互联网用户。

文件web.config 是通过应用程序进行访问。

问题是您尚未说明正在使用哪个OS和IIS版本,因此很难建议应采取的步骤。

即在IIS 7.5中,由于未为ApplicationPoolIdentity分配权限,因此可能会出现您引用的错误消息。您的Web应用程序属于应用程序池,因此您需要为运行该Web应用程序的应用程序池的OS帐户授予权限。通常,这类似于NetworkService,但您可能已对其进行了自定义,使其可以在专用帐户下运行。没有更多信息,很难为您提供帮助。


3
我可以通过编程方式授予此权限吗?请帮忙。我有同样的问题。
pcbabu

1
谢谢,这也解决了我的问题。我正在使用模拟,这显然使得有必要为模拟帐户将READ权限分配给应用程序的目录。
Cesar 2013年

2
我不断收到“无法枚举容器中的对象。访问被拒绝。” 在我允许之后
RollRoll

4
右键单击您需要授予安全权限的文件夹。这是发布应用程序的根文件夹,并且与IIS网站的物理路径相同。从上下文菜单中选择属性,然后单击“安全性”选项卡。编辑用户,然后添加用户。单击位置按钮,然后选择顶部的图标(看起来像我的电脑)。在文本区域中,输入IIS_IUSRS。重复按OK,直到所有上下文菜单都关闭。重新启动您的网站,然后再次导航到它。
杰里米·雷·布朗

如果您不想弄清楚网站物理路径上的权限,请给所有人权限!对于所有物理文件/文件夹访问而言,这是一种快速且不建议使用的技巧。
杰里米·雷·布朗

659

如果将站点配置为使用IIS URL重写模块,但未安装,也会发生这种情况。


这对我来说就是..删除了重写部分(实际上并不需要),一切都很好。
Andrew Patterson

129
打的好。<rant>如果IIS抛出“我不理解<rewrite>是什么”错误,而不是抱怨XML格式错误,那将是一个很好的选择。</ rant>
Evan Haas 2013年

7
非常感谢-这也是我的问题。如果看到<rewrite>标签,则重写模块正在使用中。有人会认为IIS可以告诉您无法解析的内容。
scolestock

6
解决命令行缺少的依赖关系的好方法。webpicmd /安装/产品:UrlRewrite2
cirrus

2
我只想指出,如果您的web.config包含<rewrite>标记,那么您需要重写模块。
乔诺,2016年

436

最后,我找到了解决问题的方法。ASP.net帐户未出现在IIS管理器中,因为我没有在IIS中选中其复选框。为此,请在Windows 7中执行以下步骤:

  1. 打开控制面板
  2. 点击“程序”链接(不卸载程序)
  3. 单击“打开/关闭Windows功能”链接
  4. 在弹出窗口中找到“ Internet信息服务IIS”并展开其节点
  5. 展开“万维网服务”节点
  6. 展开“应用程序开发功能”节点
  7. 选中“ ASP.NET”复选框
  8. 然后点击确定按钮

现在,您将在IIS管理器上看到ASP.net帐户,默认情况下,您将看到IIS帐户。现在,您应该将ASP.net网站从“我的文档”移动到IIS有权访问它的另一个位置(即,移动到计算机上的另一个分区)。现在,从IIS管理器浏览您的网站,它应该可以正常工作。

非常感谢Jeff Turner提供的解决方案。


7
也解决了我的问题。IIS 8,MVC 4站点。
斯蒂芬·赖尔2013年

必须有人已经从运行数月的服务器上删除了此角色服务。我永远都不会想到再三检查。啊。
2013年

3
使用MVC 5,IIS 10解决了我的问题。我已经检查了所有可用的ASP.NET版本。
FrenkyB 2015年

2
这必须标记为正确答案,非常感谢
Artur Keyan

1
谢谢...他们如何发布带有如此低错误信息的产品?
弗兰德

55

以我为例,安装IIS URL Rewrite模块可以解决此问题。


这是我下次提醒自己,这就是我要解决的问题。多么可怕的错误:-/
Simon_Weaver

我不知道它肯定会做什么,但是对我有用。谢谢
Scorpion

也解决了我的问题:Windows Server 2019,IIS 10
NDB


每次发生这种情况,每次我都忘记这个简单的解决方案。:D谢谢@Salim
ChiragMS

47

我遇到了同样的问题,这是对我有用的解决方案。

  1. IIS管理器
  2. 右键点击该网站
  3. 编辑权限
  4. 从“安全性”选项卡添加了用户“ IIS_IUSRS”
  5. 授予用户'IIS_IUSRS'的完整权限
  6. 将应用程序池的标识设置为“ ApplicationPoolIdentity”

5
您的1-5为我解决了。谢谢sukhdev_zala
Velojet 2014年

2
对我来说也一样,您的1-5为我解决了。
PatriceCalvé2014年

哇,我尝试了所有其他答案,但没有成功。这个解决了我的问题!
AlexGH '16

在桌面物理路径中,我做了这些。它对我
有用

2
我不建议将此用于生产目的。我相信IIS_IUSRS是一个匿名帐户,并且您将授予它对网站的整个目录结构的完全访问权限
Jacques,

39

对于Visual Studio(VS)开发人员: 正如Harvey Darvey,Savage和Snives所暗示的那样,您的应用程序主机配置可能指向错误的应用程序物理路径。如果不正确,请在/.vs/config/applicationhost.config中搜索virtualDirectory以更改physicalPath

在此处输入图片说明

确保physicalPath是正确的:

在此处输入图片说明


3
您还可以在project => properties => project url => create virtual directory中执行相同的操作,在出现提示时选择yes重新映射到正确的物理路径
Adam Diament

就我而言,这有点不同,但它给了我指导,非常感谢,这对我大有帮助:)
Bharat

这需要提高结果!
Guybrush Threepwood

24

Facepalm警报:

如果配置文件的路径错误,也会出现此错误。仔细检查以确保在IIS中正确输入了物理路径。


与此不同的是,事实证明我将路径错误地设置为站点本身。我不小心通过了映射的网络共享,而不是本地系统文件路径。
大卫

2
曾经有过相同的表情。我将网站移到了一个子文件夹,并认为我已经在IIS中正确键入了新路径。该站点似乎仍在IIS的树中显示在其下面的所有必需文件夹等,因此未将其作为触发原因。我重置了权限等,但没有解决。然后讨论一下这个问题,这是我的建议……然后,在浪费了1个小时之后,我现在又有了一个工作地点!
ladygargar '16

该路径设置在哪里?这似乎是我的问题,但我找不到我需要更改的内容
德鲁·罗雄

在开发环境:.VS>配置>对ApplicationHost.config这是当你没有一个GIT上的文件忽略了发生了什么和开发人员开始检查它。
萨维奇

我的身体路径上有一个额外的“ \”斜线-嘘。感谢这个
Ĵ国王

18

您需要在本地计算机上为IIS_IUSRS分配权限(但不必为IUSR分配权限,实际上,即使您明确拒绝权限,它也可以使用)。

要分配权限,只需右键单击该文件夹并在“安全”选项卡上,确保授予正确的权限,如果未列出该用户,则单击“ ADD”,然后输入IIS_IUSRS(并确保在“ domain”下输入本地选择计算机,或在名称字段中输入YourLocalComputerName \ IIS_IUSRS中输入),然后就可以使用了。

如果需要,可以代替将权限分配给IIS_IUSRS组,而可以分配给应用程序池,该应用程序池通常应为“ IIS APPPOOL \ 应用程序池名称 ”。


我认为,根据问题,您的答案是正确和最佳的答案。
杰里米·雷·布朗

从以下网站:iis.net/learn/get-started/planning-for-security / ... IIS_IUSRS组替换了IIS_WPG组。该内置组可以访问所有必需的文件和系统资源,以便将一个帐户添加到该组后可以无缝地充当应用程序池标识。
杰里米·雷·布朗

仍然无法访问。
GreySage

15

只是凑巧,我收到了同样的错误,我的问题也很简单:我错过了.NET Core主机捆绑包。一旦我安装了该工具并重新启动服务器,就可以了。

您可以在此处找到在Windows上托管asp.net核心的手册:https : //docs.microsoft.com/zh-cn/aspnet/core/host-and-deploy/iis/?view= aspnetcore-2.2


仅仅安装.NET Core SDK 不足以在IIS下运行ASP.NET Core网站。我花了几个小时解决这个错误...
Ryan Rodemoyer

可能还不够,但是它确实可以解决此错误。为我工作。我以为所有.NET组件都已包含在内。
pcalkins

是的,必须在此处安装“运行时和主机捆绑包”: dotnet.microsoft.com/download/dotnet-core/2.2
Kirk Woll

好的,“自包含”程序包不符合其标题。
SLCH000

11

我也发生了同样的事情,选择一个网站时,尝试通过双击IIS 7右窗格上的“连接”字符串来进行检查。

这将给您一个错误(Web配置文件存在问题),因为您使用了URL重写规则,并且未安装相应的组件。

安装“用于IIS 7的Microsoft URL重写模块2.0”,这应该可以解决您的问题


谢谢!我遇到了两天的问题,却没有找到解决方案,因为上面有太多答案了……
Michael

9

这里对我没有任何帮助,但是我在另一个SO答案中找到了此命令,它解决了我的问题。只需以管理员身份启动命令提示符并运行以下命令:

run->cmd

run "c:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i"

信用:用户Vicxx


为了修复vs 2017开发环境,我不得不从Windows 7功能中删除IIS。添加回去,根据需要更新并安装所有内容。最后一步是使用Visual Studio 2017命令提示符运行命令。现在,一切都可以再次进行,花费了8个小时的时间来解决此问题。妈..
沃伦·拉弗朗

7

我执行以下步骤来解决Windows Server 2012 IIS 8.5中的此问题。应该也适用于其他版本。

  1. 转到服务器管理器,单击添加角色和功能
  2. 在角色部分中,选择: Web Server
  3. 在“安全性”小节下,选择所有内容(我不使用摘要,IP限制和URL授权,因为我们不使用它们)
  4. 在应用程序开发选择.NET Extensibility 4.5ASP.NET 4.5无一不ISAPI条目
  5. 在功能部分选择:NET 3.5.NET 4.5ASP.NET 4.5
  6. 在“ Web服务器”部分中,选择:(Web Server全部),Management Tools(IIS管理控制台和管理服务),Windows

很好,它对我
有用

6

另一种可能为我解决了这个问题:

IIS->编辑权限->安全选项卡->授予“用户”适当的权限(或IIS_IUSRS,取决于您的设置)



6

确保将应用程序池设置为框架的正确版本。您还需要确保您的aspnet,IIS_IUSRS或IUSR用户具有对应用程序目录的读取权限。


我怎样才能做到这一点??“确保您的aspnet或IUSR用户对应用程序的目录具有读取权限”
Yasmeen'2

5
转到C:\ Users \ Yasso \ Documents \ Visual Studio 2008 \ WebSites \ WebSite5 \,并确保WebSite5目录具有IUSR和IIS_IUSRS组的读取权限。通过右键单击目录并选择属性,然后转到“安全性”选项卡,可以执行此操作。
杰夫·特纳

但我在组或用户名中看不到IUSR和IIS_IUSRS组!我不知道这是什么问题?
Yasmeen '02

1
您看到网络服务选项了吗?默认情况下,这是您在桌面上工作时应用程序池将使用的内容(如果我没记错的话)
Jeff Turner

1
右键单击文件夹和所选属性后,转到“安全性”选项卡。单击“添加”按钮,这将产生另一个带有“编辑”按钮的窗口。单击“编辑”按钮,然后在文本框中键入“网络服务”,它将找到用户并将其添加到列表中。然后,确保用户至少具有读取权限。
杰夫·特纳


4

当我在web.config文件和IIS网站中都指定了具有相同名称的默认文档(例如index.aspx)时,这也发生在我身上。我最终从IIS网站中删除了该条目,并保留了如下的web.config条目:

<system.webServer>
  <defaultDocument>
    <files>
      <add value="index.aspx" />
    </files>
  </defaultDocument>...

4

有时,此消息可能缺少您的IIS环境中的组件,例如特定框架或IIS功能(如动态压缩),而不是对web.config的权限。

在这种情况下,一种解决方案是安装并使用Microsoft Platform Installer并安装那些缺少的组件-您可能需要对确实缺少的组件进行检查,因为错误日志和消息不会告诉您。


注意:动态压缩位于“ Windows功能”列表中,而不是MPI
Simon_Weaver

@Simon_Weaver实际上动态压缩在物联网MPI将会为您安装的列表,并已自2012年起,甚至在那之前。干杯。
eagle779

4

尝试按此SO中所述安装IIS的“应用程序开发”子组件

  • 在搜索框中单击“开始按钮”,输入“打开或关闭Windows功能”
  • 在功能窗口中,单击:“ Internet信息服务”
  • 单击:“万维网服务”
  • 单击:“应用程序开发功能”
  • 检查(启用)功能。我检查了所有,但CGI。

在此处输入图片说明


完全全新安装IIS就是这种情况。谢谢!
Rumen Jekov

3

您需要为您的网站文件夹设置权限或将其复制到wwwroot文件夹:)-如果设置了权限,则有两种方式:+右键单击您的网站文件夹+或右键单击IIS中的您的网站=>选择“编辑权限”并添加一个许可(IUSR-默认iis用户)祝您好运;-)


在我的情况下-iis 8,它是经过身份验证的用户。
接穗

3

就我而言,它是由应用程序物理路径指向IIS中不存在的文件夹引起的。

应用程序设置屏幕截图


3

我从prod复制了web.config文件时遇到了问题,更改了与prod不相关的所有内容,但Rewrite规则已重写为http S

删除这些规则并运行良好。


2

相当简单,IIS无法访问您的web.config。首先,将网站从您的文件文件夹中移出。然后验证它是否具有读写权限。


我将网站从“文档”移到了另一个地方,但出现了相同的错误
Yasmeen'2

2

我也有类似的问题,我通过注释web.config文件中的某些部分来修复它。

该项目是早先在.Net 2.0中构建和部署的。迁移到.Net 3.5后,它开始引发异常。

解决方法:

如果您的配置文件包含“ < sectionGroup name =“ system.web.extensions >”,请对其进行注释并运行,因为该部分在Machine.config下已经可用。


2

如果您的web.config文件中有Synax错误或问题,则可以得到此错误。

对我来说,这是我在AppSettings中使用的URL中的一个流浪号。


我在连接字符串中还带有一个密码,密码中带有 -将其编码为&amp; 让我克服了这个问题。谢谢,这是唯一与权限无关的答案。
杰里米·汤普森

2

在IIS 7.5错误页面上,单击页面底部的“查看更多信息”,在这种情况下,它将带您到以下Microsoft链接:

http : //support.microsoft.com/kb/942055

0x80070005错误代码似乎与权限相关,按照解决方案2,方法2中的步骤为正确的帐户分配相关文件夹的权限应该可以解决该错误-我花了3天的时间寻找解决方案,直到找到解决方案,然后才开始工作。



2

浏览网站存储所在的文件夹,然后看到您将获得一个额外的文件夹“ aspnet_client”,删除该文件夹即可使用。

我试过了,我的问题解决了。

如果它对您有用,请作为答案,以便其他机构也能找到解决方案。


1

这些都不对我有用,但是我终于有了一个对我有用的解决方案:

删除web.config中的这一行:

<compilation debug="true" targetFramework="4.5"/>

不要删除这一行

<compilation debug="true"/>

1

将本地帐户IIS_IUSRS添加到安全性中,并对其进行读取/执行访问。在我的情况下有效。

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.