【问题标题】:Create folders in wwwroot on startup in NetCore在 Net Core 中启动时在 wwwroot 中创建文件夹
【发布时间】:2021-01-26 09:38:59
【问题描述】:

有没有办法在应用程序启动时在wwwroot 中创建文件夹? 也许在startup.cs 类中?

我知道如何在控制器操作方法中在wwwroot 中创建文件夹。我不想要这个。

这就是我想要的:

  • 我有一个对象列表:List<Organization> Organizations
  • foreach (Organization in Organization) 我想要在wwwroot 文件夹中创建的带有Organization.Name 的文件夹
  • 我希望在应用程序启动时创建它

提前感谢您的帮助

【问题讨论】:

  • 嗨@ZAD,关于这个案例的任何更新?我们分享的解决方案是否有助于实现要求?

标签: asp.net-core c#-4.0 wwwroot


【解决方案1】:

你可以使用以下

但请注意,您的 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);
    }
}

【讨论】:

    【解决方案2】:

    有没有办法在应用程序启动时在 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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-31
      • 2023-03-26
      • 2017-11-12
      • 2023-04-08
      • 1970-01-01
      • 2019-06-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多