.Net Core 3.1部署IIS10访问网络共享路径被拒,开发环境正常如何解决?
问题诱因
- 应用池标识权限失效:如果应用池使用域账号作为运行身份,账号密码到期、被域管理员锁定、或者之前配置的密码未同步更新,都会导致IIS进程无法通过身份校验访问网络共享资源;如果使用默认的ApplicationPoolIdentity等本地虚拟账号,这类账号本身没有跨服务器访问网络共享的权限,本身就不符合生产网络共享访问的要求。
- 身份验证配置变更:站点匿名身份验证的运行身份被修改为默认的IUSR账号,而非应用池标识,IUSR默认也没有网络共享访问权限。
- 应用池配置变更:即使应用池标识没有修改,若「加载用户配置文件」选项被改为False,IIS进程不会加载身份对应的用户配置,访问网络SMB资源时会出现权限校验失败。
- 域策略/共享权限更新:虽然网络管理员确认共享配置未变,但可能存在域侧策略更新限制了服务账号的跨服务器访问权限,或者共享文件夹的NTFS权限、共享权限两层配置中某一层被误改。
解决方案
1. 优先校验应用池核心配置
- 打开IIS管理器,定位到对应站点的应用池,右键选择「高级设置」
- 确认「标识」选项为有权限访问网络共享的域服务账号,若之前已经是域账号,重新输入一次账号密码,确认账号未被锁定、密码未过期
- 找到「加载用户配置文件」选项,设置为
True,保存配置后回收应用池 - 进入站点的「身份验证」配置页,右键「匿名身份验证」选择「编辑」,确认勾选「应用池标识」而非特定用户
2. 验证双层权限配置
网络共享文件夹有两层权限控制,需要同时满足:
- 共享权限:右键共享文件夹→属性→共享→高级共享→权限,给应用池使用的服务账号开通「更改、读取」权限
- NTFS权限:右键共享文件夹→属性→安全,给服务账号开通「修改、读取和执行、列出文件夹内容、写入」权限
3. 快速定位权限问题
登录IIS生产服务器,使用应用池对应的服务账号打开资源管理器(可通过runas /user:域\服务账号 explorer.exe命令启动),直接访问\\[network share]\Files\Video路径,手动创建文件夹/文件测试权限。如果此处就无法访问,直接排查账号权限和网络共享配置,不需要排查IIS和代码问题。
4. 排查Kerberos委派问题(域环境下前面步骤无效时操作)
联系域管理员确认两项配置:
- 应用池服务账号的域属性已开启「信任此用户作为仅Kerberos的委派」
- 已添加共享文件服务器的
cifs服务到该账号的委派权限列表 - 确认IIS服务器与共享文件服务器的时间差不超过5分钟,避免Kerberos票证校验失败
内容的提问来源于stack exchange,提问作者King Wilder
相关产品推荐
相关产品推荐

