1

当我的 asp.net Web 应用程序调用 application_start 方法(在 global.asax 中)时,我应该能够在项目的根目录中创建一个默认目录。

由于 IIS 用户没有对 webroot 目录(用于创建目录)的完全权限,我在尝试创建目录时收到拒绝访问错误消息。此外,IIS 用户不会根据客户端获得对根目录的完全访问权限。我计划如下实现满足客户的期望。请让我知道是否有比这种方法更好的出路?

方法一:

a.在服务器中创建一个新的用户帐户(windows)。b.将用户帐户名称保留在配置文件中。c.从配置文件中读取该帐户并使用目录安全对象使用该用户帐户创建目录。

代码:

DirectorySecurity dacl = new DirectorySecurity();
string useraccountForDirectoryCreate = System.Net.Dns.GetHostName() + "\\" +    "testaccount";
dacl.AddAccessRule(new FileSystemAccessRule(useraccountForDirectoryCreate,
                                                    FileSystemRights.FullControl,
                                                    InheritanceFlags.
                                                        ContainerInherit |
                                                    InheritanceFlags.ObjectInherit,
                                                    PropagationFlags.None,
                                                    AccessControlType.Allow));
Directory.CreateDirectory(imageDirectory, dacl);

上面的东西在 IIS 服务器本地工作(尚未在客户端的 IIS 服务器上测试)

我对此的担忧:我认为要求客户端创建一个要在服务器中创建的用户帐户以仅创建单个目录是不可行的。将来他可能需要授予更多用户访问目录创建的权限。继续创建 Windows 帐户是不可行的。

方法2:

a) 创建一个 IIS 用户帐户,该帐户具有对 Web 根目录的完全访问权限以创建目录。(这是更好的出路吗,这与为 IIS 用户提供对 Web 根目录的完全访问权限相同,不是吗?请澄清。) b)将帐户信息保存在 Web 配置文件中。c) 从 web config 文件中读取账户信息,并使用上述代码创建具有权限的目录。

这种方法的问题:我是否收到以下错误。

部分或全部身份参考无法翻译

当调用以下语句时。

dacl.AddAccessRule(new FileSystemAccessRule(useraccountForDirectoryCreate,
                                                    FileSystemRights.FullControl,
                                                    InheritanceFlags.
                                                        ContainerInherit |
                                                    InheritanceFlags.ObjectInherit,
                                                    PropagationFlags.None,
                                                    AccessControlType.Allow));

看起来我无法为这个新创建的用户添加访问规则。为什么会这样?我已经用谷歌搜索了上述错误消息并试图理解但我无法解决错误。我根本无法理解错误消息。请帮助解决这个问题。它的交付时间很长。

4

0 回答 0