是否有办法在应用程序启动时在wwwroot
中创建文件夹?也许在startup.cs
课上?
我知道如何在控制器动作方法中创建wwwroot
文件夹。我不想要这个
这是我想要的:
- 我有一个对象列表:
List<Organization> Organizations
foreach (Organization in Organization)
我想要一个文件夹与Organization.Name
创建在wwwroot
文件夹- 我希望它在应用程序启动时创建
提前感谢您的帮助
您可以使用以下
但是请注意在foreach中有重复的变量名
var rootFolder=Path.Combine(Directory.GetCurrentDirectory(),"wwwroot");
foreach (org in Organizations){
var orgFolderPath=Path.Combine(rootfolder,org.Name);
if(!Directory.Exists(orgFolderPath){
Directory.CreateDirectory(orgFolderPath);
}
}
是否有办法在wwwroot中创建文件夹,当应用程序启动?也许是在startup.cs课程上?
为了实现这个要求,你可以尝试将IHostApplicationLifetime
注入到Configure()
方法中,并为ApplicationStarted
写回调,然后你可以基于List<Organization> Organizations
创建文件夹。
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, IHostApplicationLifetime lifetime)
{
//...
//your code here
lifetime.ApplicationStarted.Register(OnApplicationStartedAsync(env).Wait);
//...
}
private async Task<Action> OnApplicationStartedAsync(IWebHostEnvironment env)
{
foreach (var org in Organizations)
{
var path = Path.Combine(env.WebRootPath, $"{org.Name}");
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
}
return null;
}