通过 IIS 10 在远程服务器上创建文件夹时访问被拒绝

问题描述 投票:0回答:1

我在域名为“XXXXXX082.cs.net”的 IIS 服务器上部署了一个 Web 应用程序,当用户提交表单时,该应用程序会尝试在另一台服务器“XXXXXX084.cs.net”上创建一个文件夹,其中“D”驱动器的项目文件夹。

虽然我可以从“XXXXXX082.cs.net”在“XXXXXX084.cs.net”上手动创建文件夹,没有任何问题,但 Web 应用程序始终遇到“访问被拒绝”错误。

我已验证以下内容:

  1. 权限:我已检查并确保目标文件夹(“\XXXXXX084.cs.net\D$\projects”)上的共享和 NTFS 权限允许必要的访问。

  2. 应用程序池标识:“XXXXXX082.cs.net”上 IIS 应用程序的应用程序池标识设置为“DefaultAppPool”,并且我已授予“XXXXXX084”上“项目”文件夹对“DefaultAppPool”的完全控制访问权限.cs.net”

尽管采取了这些措施,应用程序仍然报告访问被拒绝。我可能缺少什么?我应该采取哪些步骤来排除和解决此问题?

我的网络配置:

<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.

谢谢您的指导。

c# asp.net iis networking permissions
1个回答
0
投票

嗯,当你在这里谈论一些“AppPool”身份时有点令人困惑。

用户仍然是 IIS_USER。

但是,您也没有提及这两台计算机是否位于带有域控制器的某个网络上? (这意味着/表明您的域控制器服务器将允许(或不允许)此处的权限。

但是,为了节省在这里写 100 页的建议和说明吗?

我建议您在 Web 服务器上创建一个新用户(从该服务器,而不是域用户/名称。因此,使用登录名 + 密码创建一个用户。

然后在 84 服务器上,还创建相同的用户名和相同的密码。

现在测试“84”服务器上的新登录,并确保它有效,并确保它/您可以使用该用户在正确的文件夹中创建文件夹。好的,注销,现在返回服务器 82,并如上所述使用此登录应用程序池。

因此像这样:

以上将/应该简单地工作。

完全不清楚网络服务器是否位于您公司的域/网络控制器上(这不是一个好主意),但不管是不是?使用上述方法并不重要,因为在两台计算机上的每台计算机上创建一个非域用户,然后使用来自 Web 服务器应用程序池的登录应该并且将会简单地工作。

如前所述,如果此处使用域控制器,我们可以更深入地了解细节,但我发现上述方法确实有效,并且无论使用域控制器 (AD) 都有效。

© www.soinside.com 2019 - 2024. All rights reserved.