【问题标题】:No access to files in iis7 mvc app - server 2008 r2无法访问 iis7 mvc 应用程序中的文件 - server 2008 r2
【发布时间】:2011-04-25 19:53:22
【问题描述】:

我刚刚安装了 Windows Server 2008 r2 以及 Visual Studio 和 Dropbox。我将它用作开发的虚拟机,Dropbox 帮助我将文件与其他机器保持同步。

我已在 IIS 中设置了我的网站,但在尝试查看该网站时出现访问被拒绝错误。我以前遇到过这个问题,过去为了解决这个问题,我已经完成并将 IIS_User 帐户添加到读取/修改文件的权限列表中。我假设因为文件已通过下拉框复制下来,所以文件没有必要的权限。这是臭虫,我无法通过修改文件夹的权限来批量更新文件,我必须对文件级别进行正确的操作,更糟糕的是,一次一个!我不能拥有这个。

我对 2008 r2 和 IIS 7 比较陌生,所以我不知道这里发生了什么。有人可以解释发生了什么吗?如果有 IIS/文件权限设置我可以更新以在顶级文件夹中解决它?

我尝试在 IIS 中的网站上添加匿名权限,并为 IIS_User(甚至所有人)的文件夹添加权限。我有一个管理员帐户,并且已设置为允许我读取/写入/修改文件。

这通常是我收到的消息“加载配置文件时出错:拒绝访问路径 X”。

这发生在 ascx 和 aspx 文件以及配置文件上。

编辑: 从 Visual Studio 调试时,该站点可见。 该网站在完全信任下运行(内部)

请帮忙,这会阻止我工作并让我发疯!

【问题讨论】:

    标签: asp.net asp.net-mvc iis windows-server-2008


    【解决方案1】:

    默认情况下,在 IIS 7 中,网站作为本地系统的网络帐户 (NetworkService) 运行,而不是作为 IIS_User。

    要验证,请在 IIS 管理器中选择相关站点,单击基本设置...并检查分配给它的应用程序池。然后进入应用程序池并检查该应用程序池的身份。确保列出的用户在 ACL 中。

    将所有人添加到 ACL 应该可以,但以防万一我建议您检查上述内容。当然,还要确保在设置 ACL 时选中重置所有子文件夹继承的复选框,如果这适合您的应用程序。

    您还可以尝试将应用程序池的身份设置为您创建的本地(或域)用户,该用户有权访问您的应用程序目录。

    希望对您有所帮助。

    【讨论】:

    • 什么是 ACL - 抱歉告诉你我是菜鸟 :)
    • 我已经为我的网站设置了一个新的 AppPool,它的 Identity 设置为 ApplicationPoolIdentity - 不知道从这里做什么。 :s
    • 我刚刚将我的用户名/密码添加为应用程序池中的本地用户,这已经完成了工作。它至少让我工作,但我不介意了解我将来是否可以使用更“全球化”的东西。将其设置为 NetworkService 会起作用吗?为什么 ApplicationPoolIdentity 不起作用?您如何重置 ACL 上的继承 - 我现在知道的是访问控制列表。
    【解决方案2】:

    关于其他身份是否适用于您的应用程序池,这完全取决于这些身份是否有权访问您的应用程序需要访问的所有文件和/或数据库以及其他资源。现在您的应用程序在您的用户帐户下运行,通常不建议这样做。 IIS 已缓存您的密码,如果您更改密码,您的应用程序将停止工作,直到您更新应用程序池配置。

    就设置 NTFS 权限而言,它可能会变得很棘手。禁用权限继承后,每次需要更改权限时都需要单独更新该文件或文件夹。这样做的另一面是您不能删除 ACL 上的继承条目,您只能添加它们。但是,您可以设计一种策略,在文件结构的根目录提供基线级别的权限,然后将权限添加到子文件夹/文件。

    要检查和重置文件夹的继承,请进入其属性、安全选项卡,单击高级,然后单击编辑。您可以查看此文件夹是否从其父文件夹继承权限,并可选择清除所有子文件夹/文件权限并启用对所有子文件夹和文件的继承。

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-17
      • 2011-07-01
      • 1970-01-01
      • 2015-08-24
      • 1970-01-01
      • 2011-05-11
      • 1970-01-01
      相关资源
      最近更新 更多