【问题标题】:IIS forgets virtual directory permissions - An error occurred loading a configuration file: Failed to start monitoring changesIIS 忘记虚拟目录权限 - 加载配置文件时出错:无法开始监视更改
【发布时间】:2013-06-13 18:36:24
【问题描述】:

我有一个网站,其中包含一个包含 PDF 的虚拟目录。 用户使用诸​​如http://myApp.com/PDFs/12345678.pdf 之类的URL 访问PDF,其中PDFs 是映射到\\\actualPhysicalServerName\PDFsDirectory\ 的虚拟目录。 这行得通。

我经常重新部署应用程序。重新部署应用程序并重新启动网站后,用户将无法再访问虚拟目录,直到 IIS 重新启动。

访问上面的 URL 会出现以下错误:

加载配置文件时出错:无法开始监视对\\\actualPhysicalServerName\PDFsDirectory\web.config 的更改,因为访问被拒绝。

at System.Web.FileChangesMonitor.FindDirectoryMonitor(String dir, Boolean addIfNotFound, Boolean throwOnError)
at System.Web.FileChangesMonitor.StartMonitoringFile(String alias, FileChangeEventHandler callback)
at System.Web.Configuration.WebConfigurationHost.StartMonitoringStreamForChanges(String streamName, StreamChangeCallback callback)
at System.Configuration.BaseConfigurationRecord.MonitorStream(String configKey, String configSource, String streamname)
at System.Configuration.BaseConfigurationRecord.InitConfigFromFile()

重新启动应用程序池没有帮助。 我必须重新启动 IIS。 IIS重启后,虚拟目录就可以正常访问了。

这是预期的行为吗?我是否错误地设置了我的虚拟目录?

我正在使用 IIS 7.5、Windows 7 服务器和 .NET 4.5。

【问题讨论】:

    标签: asp.net iis web-deployment


    【解决方案1】:

    我这样解决了这个问题:

    1. 使用“无托管代码”和“经典”设置创建了新池。
    2. 将虚拟目录转换为应用程序,连接到具有共享权限的用户帐户
    3. 让应用程序使用新池

    【讨论】:

    • 如果删除 web.config 行,对我来说有效:<identity impersonate="true" userName="domain\adminapp"
    【解决方案2】:

    对于其他对同样问题感到沮丧的人 - 虽然我没有找到问题的症结所在,但我确实发现这个问题与 Application PoolIdentity 有关/strong> 网站正在运行。

    就我而言,解决方案是将 App Pool 身份从 ApplicationPoolIdentity 内置帐户 更改为自定义帐户,该帐户是所有机器上的管理员参与。

    这样做

    • 右键单击IIS 中的应用程序池,选择高级属性
    • ProcessModel->Identity 下,选择 Identity。选择自定义帐户(内置帐户,IIS 7.5中默认应用程序池标识)
    • 切换到使用 自定义域 帐户,即这台机器上的管理员,以及托管虚拟目录的机器上。
      • 重新启动应用程序池

    【讨论】:

      【解决方案3】:

      我有一个虚拟目录指向 UNC 共享上的图像。在我们将父应用更新到 .NET 4.5 之前,一切正常。

      我们必须将 VirDir 转换为具有 4.0 集成应用程序池的虚拟应用程序。

      【讨论】:

      • 我想知道为什么这个“停止”工作,直到我看到关键“将父应用程序更新到 .NET 4.5”。
      【解决方案4】:

      老话题,但我能够通过遵循这些instructions 来解决它(基本上将 ASPNET 和 IUSR 添加到权限:

      1. 在 Windows 资源管理器中,浏览到应用程序文件夹或包含内容的虚拟目录(例如,c:\inetpub\wwwroot\xx)。

      2. 右键单击文件夹,然后单击属性。

      3. 在“安全”选项卡上,单击“添加”。

      4. 在“选择用户或组”窗口中,点击高级

      5. 点击立即查找按钮,您将看到用户列表

      6. 选择 ASPNET 和 IUSR_(机器名) 然后单击确定关闭“选择用户或组”窗口

      7. 允许 ASPNET 和 IUSR_(machinename) 帐户具有以下权限:

        -读取和执行 - 列出文件夹内容 -阅读

      【讨论】:

        猜你喜欢
        • 2011-03-17
        • 1970-01-01
        • 2012-06-18
        • 1970-01-01
        • 2010-10-09
        • 2017-11-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多