【问题标题】:wwwroot folder in asp.net core 2.2asp.net core 2.2 中的 wwwroot 文件夹
【发布时间】:2023-04-08 05:15:01
【问题描述】:

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

在第一次查看解决方案资源管理器时,我看不到那里没有“wwwroot”文件夹。有谁碰巧知道使用 asp.net core 2.2 时 wwwroot 是否不再可见?

我检查了文档,但找不到任何东西。创建另一个文件夹并从那里提供我的静态文件没有问题,但我只是好奇。

提前致谢。

【问题讨论】:

  • 按照设计,空项目模板不会添加wwwroot文件夹、controllers文件夹、models文件夹等。
  • 谢谢 Tanvir,如果我选择 asp.net core 2.0 就可以了
  • 确实不应该。只有 ASP.NET Core MVC 模板应该有它

标签: asp.net-core wwwroot


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    手动创建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 文件夹

    我们需要在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 文件夹的警告。
    • 安全性怎么样?这样安全吗?
    • 为什么在 .NET core 2.1 中有所不同?在 2.1 及以下版本中,在一个空项目中,所有这些都已为您完成(自动创建 wwwroot 文件夹等)。为什么他们在 2.2 及更高版本的 .NET Core Web 应用程序中删除了这个?
    【解决方案3】:

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

    【讨论】:

    • 午餐文件夹!百胜!
    • 可以直接添加名为wwwroot的文件夹
    • 你的意思是启动文件夹
    【解决方案4】:

    对于未来的读者:

    A.读这个 ! https://docs.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 没有区别。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-30
      • 2019-06-10
      • 2016-07-17
      • 2018-06-04
      • 2016-12-22
      • 1970-01-01
      • 2018-12-22
      • 1970-01-01
      相关资源
      最近更新 更多