是否可以配置一个不同的文件夹来代替ASP中的wwwroot
?网络核心?如果是,又是怎么回事?这种改变有什么副作用吗?
当前在整个项目中包含wwwroot
的唯一配置是在project.json
中找到的,如下面的代码所示;但是将值替换为新文件夹的名称不足以读取静态文件(例如:index.html
)。
"publishOptions": {
"include": [
"wwwroot",
"web.config"
]
},
是否可以配置一个不同的文件夹来代替ASP中的wwwroot ?网络核心?
是的。在Program
类中添加UseWebRoot
调用:
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();
}
这种改变有什么副作用吗?
我能想到的有三个:
- Bower包管理器将不能正常工作,因为它在
wwwroot
中查找lib
文件夹。我不确定这是否可配置。 - 你需要修复
bundleconfig.json
来查看新目录。 - 您需要更新
project.json
中的include
部分,以便在发布输出中包含您的新目录。
与ASP。. NET Core 2.2,在你的Startup
的Configure()
方法中,你可以改变如下:
app.UseStaticFiles();
app.UseStaticFiles(new StaticFileOptions
{
FileProvider = new PhysicalFileProvider(Path.Combine(
AppDomain.CurrentDomain.BaseDirectory,
"myStaticFolder")),
});
参考资料/来源(auch auf Deutsch)
与ASP。. NET Core 6,如果你使用新的最小主机模型与WebApplication
类,那么最简单的方法是通过WebApplicationOptions
类的WebRootPath
属性来配置它:
var builder = WebApplication.CreateBuilder(
new WebApplicationOptions()
{
WebRootPath = "mywebroot"
}
);
默认情况下,最小托管模型是在使用Visual Studio 2022+或。net 6 SDK模板生成的web应用程序中配置的,所以这可能是新ASP最熟悉的方法。. NET Core 6应用程序。
虽然入口点已经更改为WebApplication
,但技术上仍然可以通过最小托管模型到达UseWebRoot()
,正如在接受的答案中所建议的那样,但是调用它将产生一个警告,建议使用WebApplicationOptions
。