我想在用户第一次访问url时创建文件夹,为此我创建了此代码以在我的应用程序启动文件(global.aspx.cs
)中创建这样的文件夹。但问题是文件夹只创建一次,当两个用户从不同的ip访问url但文件夹很常见。
AreaRegistration.RegisterAllAreas();
const string Chars = "ABCDEFGHIJKLMNPOQRSTUVWXYZ0123456789";
var random = new Random();
var result = new string(
Enumerable.Repeat(Chars, 12)
.Select(s => s[random.Next(s.Length)])
.ToArray());
var path = Server.MapPath("~/App_Data/" + result);
Directory.CreateDirectory(path);
Application["Path"] = Server.MapPath("~/App_Data/" + result);
答案 0 :(得分:0)
您遇到此问题是因为将为访问您网站的所有用户创建一个应用程序变量,如果您需要为不同用户创建不同的文件夹,则因为Application_AcquireRequestState
中的不同用户的会话将有所不同事件..
protected void Application_AcquireRequestState(object sender, EventArgs e)
{
HttpContext context = HttpContext.Current;
const string Chars = "ABCDEFGHIJKLMNPOQRSTUVWXYZ0123456789";
var random = new Random();
var result = new string(
Enumerable.Repeat(Chars, 12)
.Select(s => s[random.Next(s.Length)])
.ToArray());
var path = Server.MapPath("~/App_Data/" + result);
Directory.CreateDirectory(path);
// Application["Path"] = Server.MapPath("~/App_Data/" + result);
context.Session["Path"] = Server.MapPath("~/App_Data/" + result);
}
现在,在整个应用程序中,您可以为当前用户访问HttpContext.Session["Path"]
。