如何在ASP.NET Core中配置替代文件夹到wwwroot?

use*_*Bee 7 asp.net-core

是否可以配置一个不同的文件夹来替换ASP.NET Core中的wwwroot?如果是的话,这种变化有什么副作用?

目前在整个项目中包含wwwroot的唯一配置位于project.json中,如下面的代码所示; 但是,使用新文件夹的名称替换值不足以读取静态文件(例如:index.html).

"publishOptions": {
"include": [
  "wwwroot",
  "web.config"
]
},
Run Code Online (Sandbox Code Playgroud)

Wil*_*Ray 9

是否可以配置一个不同的文件夹来替换ASP.NET Core中的wwwroot?

是.UseWebRoot在您的Program课程中添加电话:

public static void Main(string[] args)
{
    var host = new WebHostBuilder()
        .UseKestrel()
        .UseWebRoot("myroot") // name it whatever you want
        .UseContentRoot(Directory.GetCurrentDirectory())
        .UseIISIntegration()
        .UseStartup<Startup>()
        .Build();

    host.Run();
}
Run Code Online (Sandbox Code Playgroud)

对这种变化有任何副作用吗?

以下是我能想到的三个:

  1. Bower包管理器将无法正常工作,因为它会在其中查找lib文件夹wwwroot.我不确定这是否可配置.
  2. 您需要修复bundleconfig.json以查看新目录.
  3. 您需要更新include部分project.json以在发布输出中包含新目录.


Blu*_*luE 9

使用 Asp.Net Core 2.2 我这样做了:在我改变的Configure方法中Setup.cs

app.UseStaticFiles();
Run Code Online (Sandbox Code Playgroud)

app.UseStaticFiles(new StaticFileOptions
{
  FileProvider = new PhysicalFileProvider(Path.Combine(
    AppDomain.CurrentDomain.BaseDirectory,
    "myStaticFolder")),
});
Run Code Online (Sandbox Code Playgroud)

参考/来源和英文在这里