ASP.NET Core 2.2中的wwwroot文件夹

51

我刚刚创建了一个新的ASP.NET Core Web应用程序,并选择了空项目模板。我使用的是Visual Studio Community 15.7.1。

初次查看解决方案资源管理器时,我发现没有“wwwroot”文件夹。是否有人知道在 ASP.NET Core 2.2 中“wwwroot”不再可见?

我检查了文档,但没有找到任何相关信息。我可以创建另一个文件夹并从那里提供静态文件,但我只是好奇。

先谢谢了。


4
根据设计,空项目模板不会添加 wwwroot 文件夹、controllers 文件夹、models 文件夹等文件夹。 - TanvirArjel
1
谢谢Tanvir,如果我选择asp.net core 2.0,它就可以了。 - FranB
它真的不应该有。只有ASP.NET Core MVC模板应该有它。 - Tseng
4个回答

50

试着在项目中添加一个名为wwwroot的新文件夹。它应该具有正确图标并按预期工作。当我使用空项目模板创建 .NET Core Web 应用程序时,这种情况总是发生在我身上。这发生在VS 2017 v15.9.3版本中。


30

在手动创建wwwroot文件夹后,我们需要在Startup文件的Configure()方法中添加staticFile中间件,如下所示,以便提供静态文件服务。

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }

        //Adding static file middleware
        app.UseStaticFiles();

        app.Run(async (context) =>
        {
            await context.Response.WriteAsync("Hello World!");
        });
    }

我们还可以将默认的wwwroot文件夹重命名为我们想要的名称。例如,如果我们想将其重命名为content,

我们需要在Program类的Main()方法中调用UseWebRoot()方法,以将Content文件夹配置为Web根文件夹,如下所示。

public class Program
{
    public static void Main(string[] args)
    {
        CreateWebHostBuilder(args).Build().Run();
    }

    public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseWebRoot("Content")
            .UseStartup<Startup>();
}

赞同此回答。但我在答案中加了一个警告,即向wwwroot文件夹添加文件的问题。 - granadaCoder
这种方式的安全性如何? - motevalizadeh
为什么.NET Core 2.1中会有所不同?在2.1及以下版本中,对于空项目,所有这些都已经为您完成(自动创建wwwroot文件夹等)。为什么在.NET Core Web应用程序的2.2及以上版本中删除了这个功能呢? - Kyle Vassella

19

你必须手动添加文件夹,然后将其重命名为wwwwroot,以便将其检测为启动文件夹。


28
午餐袋!好吃! - x0n
可以直接按名称添加名为 "wwwroot" 的文件夹。 - John
你的意思是启动文件夹吗? - Ranjan Kumar

3

未来的读者:

A. 阅读此链接! https://learn.microsoft.com/en-us/aspnet/core/fundamentals/static-files?view=aspnetcore-3.1 (或者阅读 shiram 的简要答案!)

B.(更实用)。您需要将某种文件放入“wwwroot”文件夹中。并将其标记为“始终复制”或“仅在新建时复制”。

示例:(典型的“rest” aspnetcore 项目)

bin
Controllers
Controllers\ValuesController.cs
obj
Program.cs
Startup.cs
MyCompany.MyTechnology.MyProject.csproj
MyCompany.MyTechnology.MyProject.csproj.user
wwwroot
wwwwroot\StaticContentExampleOne.txt

(将"StaticContentExampleOne.txt"标记为"始终复制"或"仅在较新"时复制)

现在您应该获取到wwwroot文件夹

例如:

"bin\debug\netcoreapp3.1\wwwroot"

并且

"bin\debug\netcoreapp3.1\wwwroot\StaticContentExampleOne.txt"

在这种情况下,我认为2.x和3.x之间没有区别。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接