Azure Web App wwwroot 在发布时重复

Azure Web App wwwroot duplicates on publish

步骤:

  1. 在 Azure 上创建空的 Web 应用程序
  2. 创建空的 .NET Core Web API VS2017 中的项目
  3. 此项目将包含一个 wwwroot 文件夹。配置我的 angular 5 应用程序构建到 wwwwroot/dist 之后,我从 VS 发布到 azure web 应用程序
  4. 网站发布后未在 Azure 上加载。在 Web 应用程序设置中,应用程序根设置为 site\wwwroot

  5. 通过 ftping(发布)进入 Web 服务器后,我可以看到应用程序的当前文件结构是 /site/wwwroot/wwwroot 所以这很奇怪。 wwwroot 已经嵌套在其自身中。

  6. 为了加载网站,我只需将应用程序设置更新为指向 /site/wwwroot/wwwroot

太棒了。有用。但是,如果我需要返回并向站点发布新的更改,则网络服务器上的文件夹结构会根据更新的应用程序设置而发生变化!现在该站点将无法加载,新文件系统为 site\wwwroot\wwwroot\wwwroot 我可以再次更新 Azure 上的应用程序设置并将该路径设置为根目录,该站点将再次运行。但是现在我在服务器上有两个网站副本,我忍不住要知道这不是 'best practice'。更不用说如果我再次发布该站点,文件系统只会附加另一个 wwwroot 并破坏该站点。

这是怎么回事?如何发布具有适当文件系统结构的站点。当站点看起来像这样时,我必须管理多个 web.config,这让我很难弄清楚如何让 angular 路由器工作。这一切都是通过初始 Microsoft 预设(网络应用程序和 webapi 应用程序)完成的。

我觉得理想情况下整个网站都应该在 wwwroot 下,只有一个 web.config

是这样吗?感谢您阅读。任何帮助表示赞赏。

如果您想将 wwwroot 作为静态文件提供,您应该在 Startup.cs 文件中稍作更改。

尝试将以下代码片段添加到 Startup.cs 文件中的 Configure() 方法中。

        app.UseDefaultFiles(new DefaultFilesOptions() {
            DefaultFileNames = new List<string>() { "index.html" }
        });
        app.UseStaticFiles();

这是完整的示例代码:

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

        app.UseDefaultFiles(new DefaultFilesOptions() {
            DefaultFileNames = new List<string>() { "index.html" }
        });
        app.UseStaticFiles();

        app.UseMvc();
    }

现在,您应该可以毫无问题地将 Web 应用程序部署到 Azure。