You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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”错误
  • 已完成的验证:
    1. 权限:确认目标文件夹\\XXXXXX084.cs.net\D$\projects的共享权限与NTFS权限均允许必要访问
    2. 应用池标识: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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 17:28:26