参考
问题描述
有一个网站部署到了 IIS 服务器。
网站里面有一个功能,通过 URL 访问另外一个系统,下载文件到目录 F:\Luoma\HRDataFiles。
接着读取 F:\Luoma\HRDataFiles 目录的文件,获取数据添加到数据库。
对应的功能运行时,报下面的错误
Access to the path 'F:\Luoma\HRDataFiles\2021_10_StaffWorkInfo.tmp' is denied.,详细信息at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy)at System.IO.FileStream..ctor(String path, FileMode mode)
问题分析
猜测是程序对 F:\Luoma\HRDataFiles 目录没有读写权限引起的。
但是对设置了该目录设置了 IIS_IUSERS 和 Everyone 的读写权限,都不行
下面是文章 Access to the path is denied (Solved) 的说法
“拒绝访问路径”错误是 ASP.NET 开发人员在应用程序中使用网络资源时遇到的最常见问题之一。
这个问题没有直接的解决办法。然而,有几件事你应该检查以解决它。
根本原因是承载 web 应用程序的应用程序池无法访问您在代码中指定的共享文件夹。因此,它抛出“拒绝访问路径”消息。
问题解决
仔细阅读下面的建议,找出应用程序池无法访问网络资源的原因。
● 您是否为应用程序池标识授予了“安全”和“共享”权限?确保该帐户在两个选项卡中都具有所需的权限。
查看网站对应的应用程序池
找到目录 F:\Luoma\HRDataFiles ,看看共享选项卡
安全 选项卡,上面的步骤已经进行了设置
● 是否启用模拟?为了检查它:“IIS管理器 > 服务器名称 > 站点 > 站点名称> 身份验证> ASP.NET模拟”。
如果启用了模拟,则被模拟的用户将需要对共享文件夹的权限。
● 你有虚拟目录吗?如果使用了任何虚拟目录,请确保它们在传递身份验证设置中使用应用程序池标识帐户。
测试结果
等待运维同学配置后测试。