IIS忘记虚拟目录权限 - 加载配置文件时出错:无法开始监视更改

ded*_*god 8 asp.net iis web-deployment

我有一个网站,其中包含一个包含PDF的虚拟目录.用户使用URL访问PDF,例如http://myApp.com/PDFs/12345678.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()
Run Code Online (Sandbox Code Playgroud)

重新启动应用程序池没有帮助.我必须重新启动IIS.重新启动IIS后,可以按预期访问虚拟目录.

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

我使用的是IIS 7.5,Windows 7服务器和.NET 4.5.

mab*_*n69 13

我这样解决了这个问题:

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

  • 对我来说,如果删除 web.config 行: `<identity impersonate="true" userName="domain\adminapp" ` (2认同)

ded*_*god 9

对于其他任何对同一问题感到沮丧的人 - 虽然我没有找到问题的症结所在,但我确实发现这个问题与网站运行的应用程序池的身份有关.

就我而言,解决方案是将App Pool身份从ApplicationPoolIdentity内置帐户更改为自定义帐户,该帐户是所有相关计算机的管理员.

去做这个

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