![](/img/trans.png)
[英]Dynamically create ASP.NET Web User Control from code - Object reference not set to an instance
[英]Dynamically create individual user folders in ASP.Net Web Forms
我在Visual Studio中使用Web表单模板-具有默认的SQL数据库成员身份-创建了一个ASP.Net网站(在VS 2015和VS 2017中复制)。 我熟悉动态创建文件夹,但是不熟悉我想要实现的范围。 我试图做到的,是动态创建只有一个单独用户访问的文件夹。 理想情况下,这应在单个用户注册其帐户时正确进行。
为了创建个人用户可以访问的文件夹,我必须对网站进行哪些更改?
这是我通常用于创建文件夹的基本代码:
protected void CreateUser_Click(object sender, EventArgs e)
{
var manager = new UserManager();
var user = new ApplicationUser() { UserName = UserName.Text };
IdentityResult result = manager.Create(user, Password.Text);
if (result.Succeeded)
{
IdentityHelper.SignIn(manager, user, isPersistent: false);
IdentityHelper.RedirectToReturnUrl(Request.QueryString["ReturnUrl"], Response);
string name = user.UserName;
string foldername = "~/" + name + "Folder/";
string johndoefolderpath = Server.MapPath(foldername);
if (!Directory.Exists(johndoefolderpath))
{
Directory.CreateDirectory(johndoefolderpath);
}
else
{
ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert('Directory already exists.');", true);
}
}
else
{
ErrorMessage.Text = result.Errors.FirstOrDefault();
}
}
我假设您正在引用NTFS权限。 您的问题是,当您创建文件夹时,它是使用创建该文件夹的帐户的权限创建的-可能不是您正在创建该文件夹的用户,因为要实现此目的,每个潜在用户都需要对该文件夹创建权限。 不好的安全习惯。
因此,您需要做的就是像上面一样创建文件夹,然后更改对创建的文件夹的权限以为该用户添加写权限。 查看FileSystemAccessRule类,了解如何处理分配这些权限。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.