我有一个网站,其中包含包含 PDF 的虚拟目录。 用户通过使用诸如 http://myApp.com/PDFs/12345678.pdf 之类的 URL 访问 PDF,其中
PDFs
是映射到 \\\actualPhysicalServerName\PDFsDirectory\
的虚拟目录。
这有效。
我经常重新部署应用程序。重新部署应用程序并重新启动网站后,用户将无法再访问虚拟目录,直到重新启动 IIS。
访问上述网址出现以下错误:
加载配置文件时发生错误:无法开始监视对
的更改,因为访问被拒绝。\\\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。
我是这样解决这个问题的:
对于其他因同一问题而感到沮丧的人 - 虽然我没有找到问题的症结所在,但我确实发现这个问题与网站运行所在的应用程序池的身份有关。
就我而言,解决方案是将 App Pool 身份从 ApplicationPoolIdentity 内置帐户更改为作为所有相关计算机上的管理员的自定义帐户。
要做到这一点
我有一个虚拟目录指向 UNC 共享上的图像。一切都工作正常,直到我们将父应用程序更新到 .NET 4.5。
我们必须使用 4.0 集成应用程序池将 VirDir 转换为虚拟应用程序。
老话题,但我能够按照这些说明解决它(基本上将 ASPNET 和 IUSR 添加到权限中:
在 Windows 资源管理器中,浏览到应用程序文件夹或包含内容的虚拟目录(例如,c:\inetpub\wwwroot\xx)。
右键单击该文件夹,然后单击“属性”。
在安全选项卡上,单击添加。
在“选择用户或组”窗口中,单击“高级”
点击“立即查找”按钮,您将看到用户列表
选择 ASPNET 和 IUSR_(机器名称),然后单击“确定”关闭“选择用户或组”窗口
允许 ASPNET 和 IUSR_(machinename) 帐户具有以下权限:
-读取并执行 -列出文件夹内容 -阅读
我刚刚通过向我的网站目录上的 IIS_ISURS 授予读取权限,自己解决了这个问题。
我尝试按照 dedgod 的答案更改应用程序池用户,但我使用的是公司计算机,无法让我的网络帐户正常工作。希望这对使用工作机器的任何人都有用......
IIS 应该能够访问您的站点文件。