部署在IIS上的Flask应用无法提供网络文件夹内文件的访问服务
IIS部署Flask应用访问网络存储权限错误[Error 13]解决方案
核心原因
本地终端启动Flask时,应用使用当前登录的Windows用户身份运行,该身份默认具备网络存储的访问权限;而IIS部署时,应用默认使用IIS内置的受限本地账户运行,这类账户没有网络共享存储的访问权限,因此触发权限拒绝错误。
可行解决方案
方案一:修改应用程序池运行身份(最常用)
- 打开IIS管理器,定位到Flask应用对应的应用程序池,右键选择「高级设置」
- 找到「进程模型」分类下的「标识」项,点击右侧的三个点按钮打开配置窗口
- 选择「自定义账户」选项,点击「设置」,输入拥有目标网络存储访问权限的域账户/本地账户的用户名和密码,保存所有配置
- 重启对应应用程序池和站点,重新测试网络文件访问
方案二:为IIS内置账户配置网络存储权限
如果无法更换应用程序池的运行身份,可直接给应用对应的内置账户开权限:
- 右键点击网络共享目标文件夹,依次选择「属性」-「共享」-「高级共享」-「权限」,添加账户
IIS AppPool\你的应用程序池实际名称,授予读取权限 - 切换到文件夹属性的「安全」选项卡,添加上述同一账户,授予「读取 & 列出目录内容」权限
- 跨设备的网络存储需要同步在存储设备侧配置相同的权限规则
路径配置排查
IIS运行环境下不要使用映射盘符(如Z:\共享文件夹\文件.pdf)访问网络存储,必须使用UNC路径格式:\\存储设备IP\共享文件夹名称\目标文件.pdf
映射盘符仅对当前登录用户可见,IIS运行身份默认无法识别映射盘符。
身份验证排查
可在Flask应用中加入以下代码,打印当前应用的运行身份,确认权限配置生效:
import getpass # 可写在对应文件访问接口中,调用接口查看输出 current_user = getpass.getuser()
内容的提问来源于stack exchange,提问作者Naveen Shetty
相关产品推荐
相关产品推荐

