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

3pmvbmvn  于 12个月前  发布在  其他
关注(0)|答案(5)|浏览(162)

我有一个包含PDF文件的虚拟目录的网站。用户通过使用诸如http://myApp.com/PDFs/12345678.pdf的URL访问PDF文件,其中PDFs是Map到\\\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 Server和.NET 4.5。

uz75evzq

uz75evzq1#

我是这样解决这个问题的:
1.已创建具有“无托管代码”和“经典”设置的新池。
1.已将虚拟目录转换为应用程序,正在与对共享具有权限的用户帐户连接
1.让应用程序使用新池

niknxzdl

niknxzdl2#

对于任何其他对同样问题感到沮丧的人来说-虽然我没有找到问题的症结,但我确实发现这个问题与网站运行的应用程序池身份有关。
在我的案例中,解决方案是将App Pool身份从ApplicationPoolIdentity内置帐户更改为自定义帐户,该帐户是所有相关计算机上的管理员。
这么做

  • 右键单击IIS中的应用程序池,选择高级属性
  • 在【流程模型】-【标识】下,选择【标识】,选择【自定义账号】(内置账号,IIS 7.5默认为应用池标识)
  • 切换到使用自定义域帐户,即此计算机以及托管虚拟目录的计算机上的管理员。
  • 重启应用池
kq4fsx7k

kq4fsx7k3#

我有一个虚拟目录指向的图像上共享。一切都工作正常,直到我们更新的父应用程序到.NET 4.5。
我们必须将VirDir转换为具有4.0集成应用程序池的虚拟应用程序。

dgiusagp

dgiusagp4#

旧的主题,但我能够解决它以下这些instructions(基本上添加ASPNET和IUSR权限:
1.在Windows资源管理器中,浏览到应用程序文件夹或包含内容的虚拟目录(例如,c:\inetpub\wwwroot\xx)。
1.右键单击该文件夹,然后单击“属性”。
1.在安全选项卡上,单击添加。
1.在“Select Users or Groups”(选择用户或组)窗口中,单击“Advance
1.点击“立即查找”按钮,您将看到用户列表
1.选择ASPNET和IUSR_(machinery),然后单击确定关闭“选择用户或组”窗口
1.允许ASPNET和IUSR_(machinery)帐户具有以下权限:

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

jjhzyzn05#

我刚刚设法解决了这个问题,通过授予我的网站目录上的IIS_ISURS读取权限。
我试图按照dedgod的回答更改应用池用户,但我使用的是企业机器,无法让我的网络帐户正常工作。希望这可能对使用工作机器的任何人有用.

  • 在Windows资源管理器中右键单击您的网站目录,然后选择给予访问权限>特定人员。
  • 将弹出一个新窗口-从弹出窗口中选择查找人员,然后单击位置.并在弹出窗口中选择您的本地计算机(应位于顶部)。
  • 然后单击“高级...”,这将打开另一个弹出窗口。单击“立即查找”,该窗口的底部窗格应填充您计算机的所有用户。找到IIS_IUSRS并选择它,然后单击“确定”以关闭该窗口。
  • 在剩余的窗口中单击“确定”,这将在“网络访问”列表中填充IIS_IUSRS用户。为该用户分配读取权限,然后单击“共享”。

IIS应该能够访问您的站点文件。

相关问题