【问题标题】:How to a serve static site on Azure with Git (Bitbucket)?如何使用 Git (Bitbucket) 在 Azure 上提供静态站点?
【发布时间】:2016-01-07 18:47:25
【问题描述】:

我在 Azure 上有一个 MVC 6 应用程序,为了托管我的静态文件,我必须 ftp 到服务器并手动将它们放在 /site/wwwroot 上。在进行日常更改时,这有点麻烦。 为了解决这个问题,我在 Azure 上使用 Bitbucket 设置了连续部署。我为静态站点创建了单独的存储库。我注意到 repo 被添加到/site/repository

如何从那里提供静态文件?我尝试将虚拟目录从 / --> site\wwwroot 更改为 / --> site\repository 但得到了

指定的 CGI 应用程序遇到错误,服务器终止了进程

有点吓人。还原更改并重新启动服务器不起作用。我不得不再次从 Visual Studio 发布以某种方式覆盖配置。

【问题讨论】:

  • 因为您已经为您的站点设置了继续使用 Bitbucket 进行部署。当每次推送到您的存储库时,都应该进行新的部署,并且应该为您自动复制任何文件更改。为什么需要手动复制这些文件?我没有关注你所面临的问题。
  • 关于“/site/repository”,Azure App Service 将您的 bitbucket 存储库克隆到“/site/repository”,但应该有构建脚本将构建输出复制到 wwwroot
  • @XiaominWu 之前我用的是 FTP,现在我用的是 git/bitbucket 但我不知道如何提供文件。
  • @XiaominWu 喜欢 git hooks?
  • 如果您设置继续部署,Azure 将设置 webhook 以继续部署。如果您的应用是示例应用。你能把它放在公共存储库上,这样我就可以尝试看看我是否能够重现你的问题?

标签: git azure bitbucket asp.net-core-mvc


【解决方案1】:

MVC 6 应用程序将在根目录中有一个 wwwroot 文件夹(作为控制器、视图等的兄弟)

如果您将静态内容放在那里,并确保在您的 startup.cs 中定义了 app.UseStaticFiles();,则您的静态内容应该与其余内容一起部署和运行。

【讨论】:

  • 我将wwwroot 的名称更改为ionic,因为它更清晰,我只需要更改project.json 中的一个字符串。我会尝试改回来,所以我只有 1 个回购。
【解决方案2】:

在另一个线程中 (Serving static files in ASP.NET 5 MVC 6)

你需要

1) 尝试升级以使用最新版本的 MVC 6 (https://github.com/aspnet/Mvc/releases)

2) 将静态文件放在 wwwroot 下

3)app.UseStaticFiles

4) 如果存在 IIS 未知的文件,则必须通过 web.config 或代码配置 mime-type,例如

var provider = new FileExtensionContentTypeProvider();
provider.Mappings.Add(".json", "application/json");
provider.Mappings.Add(".ico", "image/x-icon");
// Serve static files.
app.UseStaticFiles(new StaticFileOptions { ContentTypeProvider = provider });

【讨论】:

  • 升级到最新版本是什么?
猜你喜欢
  • 2016-01-24
  • 2019-12-29
  • 1970-01-01
  • 1970-01-01
  • 2021-07-30
  • 1970-01-01
  • 2014-04-12
  • 2015-10-30
  • 2018-10-21
相关资源
最近更新 更多