关于asp.net:无法访问请求的页面,因为页面的相关配置数据无效错误

The requested page cannot be accessed because the related configuration data for the page is invalid error

我想通过IIS manager在IIS上上载我自己的ASP.NET网站。但当我这样做的时候,我会得到以下错误

HTTP Error 500.19 - Internal Server Error The requested page cannot be
accessed because the related configuration data for the page is
invalid

1
2
3
4
5
6
Module  IIS Web Core
Notification    Unknown
Handler Not yet determined
Error Code  0x80070005
Config Error    Cannot read configuration file due to insufficient permissions
Config File \\?\C:\Users\Yasso\Documents\Visual Studio 2008\WebSites\WebSite5\web.config

我多次搜索这个错误的解决方案,但没有一个解决方案解决了这个错误。

我的IUSR账户有问题。我在web.config的属性中的"组或用户名"中看不到这个帐户。

有什么问题?


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


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

  • 打开控制面板
  • 点击"程序"链接(不卸载程序)
  • 单击"打开/关闭Windows功能"链接
  • 在弹出窗口中找到"Internet Information Services IIS",并展开其节点
  • 扩展"万维网服务"节点
  • 展开"应用程序开发功能"节点
  • 选中"ASP.NET"复选框
  • 然后单击"确定"按钮
  • 现在,您将在IIS管理器上看到ASP.NET帐户,默认情况下,您将看到IIS帐户。现在,您应该将您的ASP.NET网站从"我的文档"移动到IIS有权访问它的另一个位置(即,移动到您计算机上的另一个分区)。现在,从IIS管理器浏览您的网站,它应该可以工作了。

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


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

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

    访问权限应该相当简单,至少是读的,而且根据应用程序的不同,可能是写的。

    上面,您提到的IUSR等不在web.config的属性中。如果您的意思是IUSR没有列在文件的安全选项卡中,那么这是一件好事。人们不想给iusr任何形式的web.config权限。IUSR角色是匿名互联网用户。

    文件web.config只能通过应用程序访问。

    问题是你没有说你使用的是哪个操作系统和IIS版本,所以很难建议你采取什么步骤。

    也就是说,在IIS 7.5中,由于应用程序PoolIdentity未被分配权限,您引用的错误消息可能会出现。您的Web应用程序属于应用程序池,因此您需要授予运行Web应用程序池所使用的OS帐户权限。通常,这类似于NetworkService,但您可能已将其自定义为在专用帐户下运行。如果没有更多的信息,很难帮助你。


    在我的案例中,安装了IIS URL重写模块解决了这个问题。


    我也遇到了同样的问题,这就是我的解决方案。

  • 管理器
  • 在那个网站上单击右键
  • 编辑权限
  • 已从"安全"选项卡中添加用户"iis-iusrs"
  • 已授予用户"iis-iusrs"完全权限
  • 将应用程序池的标识设置为"applicationPoolIdentity"

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

    enter image description here

    确保physicalPath正确:

    enter image description here


    警告:

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


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

    要分配权限,只需右键单击文件夹并在"安全"选项卡上确保授予正确的权限,如果未列出用户,则单击"添加",然后输入IIS iusrs(并确保在"域"下选择了本地计算机,或在"名称"字段中输入您的本地计算机名称IIS iusrs),然后就可以开始了。

    如果需要,您可以将权限分配给"IIS应用程序池应用程序池名称",而不是分配给"IIS应用程序池"组。


    同样的事情发生在我身上,当你选择一个网站时,试着通过双击IIS 7右窗格上的连接字符串来检查这一点。

    它会给您一个错误(Web配置文件有一些问题),因为您已经使用了URL重写规则,并且没有安装相应的组件。

    安装"Microsoft URL Rewrite Module 2.0 for IIS 7",这样可以解决您的问题。


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

    1
    2
    3
    run->cmd

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

    学分:用户VICxx


    EHM。我已将网站/文件移动到其他文件夹。不更改IIS网站中的路径。

    你们现在都可以笑了。


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

    IIS->edit permissions->security tab->give"users"appropriate permissions(或根据您的设置为IIS提供适当的权限)


    我做这些步骤来解决这个问题Windows Server 2012,IIS 8.5。也适用于其他版本。

  • 转到服务器管理器,单击添加角色和功能
  • 在"角色"部分选择:Web Server
  • 在"安全"子部分下,选择所有内容(我排除了摘要、IP限制和URL授权,因为我们不使用它们)
  • 在应用程序开发中,选择.NET Extensibility 4.5ASP.NET 4.5和两个ISAPI条目。
  • 在功能部分选择:NET 3.5.NET 4.5ASP.NET 4.5
  • 在Web服务器部分,选择:Web Server(all)、Management Tools(IIS管理控制台和管理服务)、windows。

  • 确保将应用程序池设置为框架的正确版本。您还需要确保您的aspnet、iis-iusr s或iusr用户具有对应用程序目录的读取权限。


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

    如果是这种情况,解决方案可以是安装和使用Microsoft平台安装程序,并安装那些丢失的组件-您可能需要尝试一下到底缺少什么,因为错误日志和消息不会告诉您。


    当我在web.config文件和我的IIS网站中都指定了相同名称的默认文档(如index.aspx)时,我也遇到了这种情况。我最终从IIS网站删除了该条目,并保留了web.config条目,如下所示:

    1
    2
    3
    4
    5
    6
    <system.webServer>
      <defaultDocument>
        <files>
         
        </files>
      </defaultDocument>...

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


    当我从prod中复制web.config文件时,我遇到了这个问题,除了重写为https的重写规则,我更改了所有与prod无关的内容。

    删除了这些规则,运行良好。


    在我的例子中,它是由应用程序物理路径导致的,指向IIS中不存在的文件夹。

    application setting screenshot


    浏览你的网站存储的文件夹,你会得到一个额外的文件夹"aspnet_client"删除该文件夹,它将为你工作。

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

    如果它对你有效,请把它作为答案,这样其他人也会得到解决方案。


    映射驱动器出现此问题,IIS无法处理映射驱动器。只需使用未映射的驱动器。


    非常直接,IIS没有访问web.config的权限。我先把网站从你的文档文件夹中拿出来。验证它是否也具有R/W权限。


    如果web.config文件中存在synax错误或问题,则可能会出现此错误。

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


    只是为了解决这个问题,我收到了同样的错误,我的问题很简单:我缺少.NET核心托管包。一旦我安装了这个工具并重新启动了服务器,一切都很好。

    您可以在以下位置找到Windows上托管ASP.NET核心的手册:https://docs.microsoft.com/en-us/asp net/core/host-and-deploy/iis/?视图=aspnetcore-2.2


    我也有类似的问题,我通过评论web.config文件中的一些部分来解决它。

    该项目先前是在.NET 2.0中构建和部署的。在迁移到.NET 3.5之后,它开始抛出异常。

    决议:

    如果配置文件包含"


    在"IIS 7.5错误"页面上,您可以单击页面底部的"查看更多信息",在这种情况下,您将看到以下Microsoft链接:http://support.microsoft.com/kb/9420550x80070005错误代码似乎与权限相关,按照解决方案2中的步骤,方法2分配对相关文件夹具有权限的正确帐户应该可以解决问题-我花了3天时间寻找解决方案,直到遇到它,然后立即解决。


    在我的例子中,配置部分必须位于配置的顶部

    1
    2
    3
    4
    5
    6
    7
    <configuration>
    <configSections>
    ...
    </configSections>
    <othersetting>
    </othersetting>
    .....

    最后,我删除了Web应用程序的obj文件夹,解决了这个问题。重建解决方案后,问题就消失了。


    对我来说,我从源代码管理中得到了最新的消息,这就发生了。

    applicationhost.config文件的virtualDirectory路径与我的计算机中的路径不同。

    我恢复了我自己的拷贝,它开始工作了。我正在使用IIS Express。

    enter image description here


    这些都不适合我,但我最终找到了一个适合我的解决方案:

    在web.config中删除此行:

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

    不要删除此行

    1
    <compilation debug="true"/>

    我在web.config中指定了以下路径system.webServer\security\authentication的值之后,得到了这个奇怪的错误。

    我们更喜欢控制如何使用web.config配置IIS,因为IIS是一个可怕的产品,很难使用其他方法配置。

    问题是,IIS通过将配置的一部分锁定到外部的捣乱者,来标记其权限。

    可以使用功能委派小程序在IIS服务器级别设置读/写来解锁身份验证配置。

    当然,在我们必须自动化配置IIS身份验证类型之前,现在我们必须自动化解锁。我有没有提到过IIS是一个可怕的产品?


    在我的例子中,它只对匿名身份验证属性进行注释(或删除):

    1
    2
    3
    4
    5
     <security>
         
             <!---->
         </authentication>
     </security>

    将本地帐户IIS添加到安全性中,并授予它们读取/执行访问权限。这对我的案子有效。


    服务器崩溃后,我们的站点开始出现"HTTP 500.19 0x80070005错误-无法读取配置文件web.config"错误。通常是权限或匿名用户配置,但这些设置都很好,没有更改。由于怀疑IIS元数据库(或自iis7以来在%windir%system32inetsrvconfigapplicationhost.config中)中有损坏的内容,我可以通过删除IIS中的站点并重新创建来备份和运行该站点。


    尝试安装IIS的"应用程序开发"子组件


    在我的例子中,我选择了带有.NET Framework 2.0的应用程序池并启用了32位应用程序。我有.NET Framework 2.0应用程序。

    我在一个SQL Server复制项目上得到一个"试图加载格式不正确的程序"错误


    只需将命名空间从[WebService(namespace="http://tempuri.org/")]更改为

    http://microsoft.com/webservices网站/

    我用这个方法解决了我的问题


    安装ASP.NET核心模块

    使用以下链接下载安装程序:https://www.microsoft.com/net/permalink/dotnetcore-current-windows-runtime-bundle-installer


    我更改了web.config文件以提供实际路径,而不是相对路径。

    1
    2
    3
    <httpPlatform processPath="F:\Projects\.....
    instead of
    <httpPlatform processPath="..\approot\web.cmd"

    在我的例子中,我所做的只是以管理员模式运行Visual Studio。


    检查错误/hresult代码并遵循以下指南:

    • 打开IIS 7.0网页时出现"HTTP错误500.19"错误

    0x800 7000

    This problem occurs for one of the following reasons:

    • You are using IIS 7.0 on a computer that is running Windows Vista. Additionally, you configure the Web site to use UNC Passthrough authentication to access a remote Universal Naming Convention (UNC) share.

    The IIS_IUSRS group does not have the appropriate permissions for the ApplicationHost.config file, for the Web.config file, or for the virtual/application directories of IIS.

    解决方案方法1

    Do not configure the Web site to use UNC Passthrough authentication to access the remote UNC share. Instead, specify a user account that has the appropriate permissions to access the remote UNC share.

    方法2(最有可能)

    Grant the Read permission to the IIS_IUSRS group for the ApplicationHost.config file or for the Web.config file.

    所以简单来说,你需要:

  • 打开包含所报告配置文件的文件夹的属性(如Web.config)。
  • 在"安全"选项卡中,编辑…加……:IIS_IUSRS组确认。

  • 安装.NET核心Windows Server托管捆绑包

    https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/iis/?视图=aspnetcore-2.1

    https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/iis/index?tabs=aspnetcore2X&;view=aspnetcore-2.1


    我在使用Visual Studio 2017从本地计算机运行项目时遇到此错误。

    这些解决方案中没有一个对我有用。在一天结束时,对我有用的修复方法是:

  • 右键单击项目->属性->Web->项目URL
  • 在"项目URL"文本框中,我将端口号增加了一个,然后单击"创建虚拟目录"按钮。
  • 保存更改,然后再次运行项目。

  • 打开您的文件夹,其中包含您的项目与Windows资源管理器。右键单击该文件夹并为用户添加权限。


    *非常简单的解决方案:

  • 去IIS

  • 从左窗格中选择应用程序。

  • 双击中间窗格中的目录浏览。

  • 现在转到右窗格,在"操作"选项卡下,单击"启用"

  • 这就是全部!!

    人们,试着理解错误:由于权限不足,配置错误无法读取配置文件