【问题标题】:Azure Web App wwwroot duplicates on publishAzure Web App wwwroot 在发布时重复
【发布时间】:2018-11-17 17:51:57
【问题描述】:

步骤:

  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 我可以再次更新 a​​zure 上的应用程序设置并将该路径设置为根,站点将再次运行。但是现在我在服务器上有两个网站副本,我不禁认为这不是“最佳实践”。更不用说如果我再次发布该站点,文件系统只会附加另一个 wwwroot 并破坏该站点。

这里发生了什么?如何使用适当的文件系统结构发布我的网站。当网站看起来像这样时,我必须管理多个web.configs,这让我很难弄清楚如何让角度路由器工作。这一切都是通过最初的 microsoft 预设(网络应用程序和 webapi 应用程序)完成的。

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

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

【问题讨论】:

  • Web API 项目是否必须配置为从 wwwroot 返回静态文件?我认为它不知道如何为他们服务。
  • 如何将您的网站发布到 Azure?您是否将 Visual Studio 2017 的内置发布功能与 Azure 应用服务中的 发布配置文件 结合使用?
  • @WillHuang 是的。我右键单击该项目并选择发布。然后我在我的 azure 帐户上选择 web 应用程序并从那里继续。
  • 创建一个全新的 Azure Web 应用程序和一个全新的 WebAPI 项目,其中包含 wwwroot 内的 index.html 和发布甚至不起作用。 API 路由将起作用,但 index.html 不会呈现。这是微软的问题吗?我觉得它不是,因为似乎没有人有这个问题。
  • 你使用的是 ASP.NET Core 2.1 吗?

标签: angular azure iis asp.net-core asp.net-web-api2


【解决方案1】:

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

尝试将以下代码 sn-p 添加到 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。

【讨论】:

  • 这解决了这个问题。 wwwroot 不再重复每次发布,我不再需要为我的 api 指定第二个虚拟应用程序目录。非常感谢
  • 用于重写 SPA 路由的 web.config 规则现已破坏。但这是一个新的障碍。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-01
  • 2019-10-16
  • 1970-01-01
  • 2015-12-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多