IIS 10部署Web应用远程创建文件夹时遇Access Denied问题排查
问题描述
在域名XXXXXX082.cs.net的IIS 10服务器上部署了Web应用,用户提交表单时,应用尝试在另一台服务器XXXXXX084.cs.net的D盘projects文件夹中创建文件夹。
- 手动从
XXXXXX082.cs.net向XXXXXX084.cs.net创建文件夹无任何问题,但Web应用持续报“Access Denied”错误 - 已完成的验证:
- 权限:确认目标文件夹
\\XXXXXX084.cs.net\D$\projects的共享权限与NTFS权限均允许必要访问 - 应用池标识:
XXXXXX082.cs.net上IIS应用的应用池标识设置为DefaultAppPool,且已为该标识授予XXXXXX084.cs.net上projects文件夹的完全控制权限
- 权限:确认目标文件夹
Web.config配置
<add key="ProjectFilesRootPath" value="\\XXXXXX084.cs.net\projects\" />
控制器创建文件夹方法
private string ProjectFolderRootPath { get { var projectFolderPath=ConfigurationManager.AppSettings().ProjectFilesRootPath; return projectFolderPath; } } [HttpGet] public string createProjectFolder(string id, string PName) { try { string PId= id; string ProName = PName; string rootPath = ProjectFolderRootPath.TrimEnd(Path.DirectorySeparatorChar); string combinedName = $"{PId} {ProName}"; string projectFolderPath = Path.Combine(rootPath, combinedName); projectFolderPath = projectFolderPath.Replace(Path.DirectorySeparatorChar, '/'); if (!Directory.Exists(projectFolderPath)) { Directory.CreateDirectory(projectFolderPath); } return projectFolderPath; } catch (Exception ex) { return "Error creating project folder: " + ex.Message; } }
错误信息
Error creating project folder: Access to the path '//XXXXXX084.cs.net/Projects/10215 Test' is denied.
排查与解决步骤
- 修正路径大小写不一致问题:错误信息中路径是
Projects(首字母大写),但配置里是projects(小写)。Windows文件系统虽默认不区分大小写,但跨服务器访问时可能因共享/NTFS文件夹名的大小写匹配问题触发权限校验失败。确认目标服务器实际文件夹名,统一配置和代码中的路径大小写。 - 验证跨服务器身份验证的实际账户:
DefaultAppPool默认使用本地账户IIS AppPool\DefaultAppPool,跨服务器访问时,实际会以XXXXXX082.cs.net的计算机账户(DOMAIN\XXXXXX082$)进行身份验证。需给该计算机账户授予\\XXXXXX084.cs.net\D$\projects的共享和NTFS权限,而非仅给本地DefaultAppPool账户授权。 - 移除不必要的路径分隔符转换:代码中把目录分隔符替换为
/,可能导致跨UNC路径解析异常。删除projectFolderPath = projectFolderPath.Replace(Path.DirectorySeparatorChar, '/');这行代码,保持原生UNC路径格式(\\server\share\folder)。 - 确认共享路径的正确性:配置中使用
\\XXXXXX084.cs.net\projects\,但验证的是\\XXXXXX084.cs.net\D$\projects。若projects是D$共享下的子文件夹,需将配置路径改为\\XXXXXX084.cs.net\D$\projects\;若projects是独立共享,需单独检查该共享的权限设置。 - 启用审核日志定位具体权限问题:在
XXXXXX084.cs.net服务器上,对projects文件夹启用对象访问审核,查看事件管理器的安全日志,确认被拒绝访问的账户及具体权限类型(创建文件夹、写入等)。 - 检查Kerberos约束委派配置:若处于域环境且使用Kerberos身份验证,需确保
XXXXXX082.cs.net服务器被允许委派到XXXXXX084.cs.net的CIFS文件服务,否则会导致身份传递失败,无法访问共享资源。
内容的提问来源于stack exchange,提问作者Snooper_A
相关产品推荐
相关产品推荐

