问题标签 [azure-deployment-slots]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2250 浏览

angularjs - azure 上的 angular 2 应用程序读取应用程序设置

我想使用 VSTS CI/CD 将 Angular 2 应用程序部署到不同的 Web 应用程序插槽(比如说开发、登台和产品)。每个插槽应指向不同的 Web api。通常会在应用程序中指定三个不同的环境文件,但缺点是我必须使用不同的环境构建三次。

我想要实现的是只有两个构建,dev 和 prod。dev get 部署到 dev slot,prod build get 先部署到 staging,然后同一个 build 应该部署到 production slot。我可以为每个插槽定义应用程序设置。它们被视为环境变量。

有没有办法从 angular 2 应用程序中读取这些配置设置,还是我错过了其他东西?

0 投票
3 回答
1908 浏览

angular - Azure Slot 部署的 Angular 2 配置问题

我遇到了 Angular 环境变量和 Azure Slots 的问题

我们希望使用提供静态 Angular 文件的应用服务,并且我们还希望使用 Azure 插槽来使我们的部署更安全。

我们要使用插槽的原因是:

  1. 确保代码在生产环境中正常运行,然后才能对所有人完全可用
  2. 将停机时间减少到几乎为零,因为在“上线”阶段没有部署任何构建

我们的 Angular 站点仅提供静态文件意味着插槽部署需要不同的构建来为每个插槽以不同的方式填充 env.json 环境设置。

我们正在考虑采取的解决方案是在同一个 Angular 网站中创建一个端点,并从 Angular 网站调用回其源以获取其配置。这种方式可以在 Azure 的暂存槽和生产槽中设置不同的配置,并且只需要一个 Angular 构建。

我们需要一些服务器端代码来获取这些 Azure 应用程序设置并将它们提供回站点上的端点。我们还没有决定我们用来创建那个端点的技术——我们目前正在考虑 .Net Core 或 NodeJs,因为它们似乎很适合 Angular 产品和开发团队。

有没有人有任何插入服务器端组件来为以前的静态 Angular 网站提供配置的经验?

0 投票
0 回答
199 浏览

azure - 将发布代码限制到部署槽

对于同一个应用服务,我们有多个插槽。我们希望通过不允许用户从 Visual Studio 将代码发布到登台和生产槽来限制用户。我允许读者访问 staging 和 prod 插槽,但用户仍然能够发布代码。我们可能需要做任何其他设置/配置。

0 投票
1 回答
1518 浏览

azure - 带有僵尸登录重定向循环的 Azure AD Web 应用

我正在开发一个带有开发、暂存和蓝绿插槽的 Azure 应用程序。身份验证由 Azure AD 处理,用户被重定向到 microsoftonline 登录页面。我昨天下载了每个插槽的发布配置文件并发布了所有三个。我在多台计算机和浏览器上对它们进行了测试,所有三个插槽都正常工作。

今天早上我再次测试了它们,只有开发槽有效。Staging 和 bluegreen 都重定向到登录页面,但一旦通过身份验证,可怕的无限重定向循环就会接管。

该站点需要 SSL,但这似乎与问题无关。当插槽工作时,通过 HTTP 或 HTTPS 访问它们都正确重定向到 HTTPS。

回复 URL 也都已设置,并且似乎与问题无关。

我不确定接下来要看什么。是否存在可能影响插槽的定期运行的 Azure 进程?为什么插槽会工作几个小时然后停止工作?


循环:(向 [app]-[slot].azurewebsites.net 发送请求 => 等待 [app]-[slot].azurewebsites.net => 等待 login.microsoftonline.com => 向 [app] 发送请求-[slot].azurewebsites.net) 等等。

0 投票
0 回答
205 浏览

azure - Linux bitbucket 上的 Azure Web App 部署失败

从昨天开始,我无法在 Linux 上的 Azure Web App 上部署来自 bitbucket 的任何更改。我尝试使用新插槽,但出现以下错误,MS 专家对解决此问题有何建议?

使用 Bitbucket 为 Web 应用程序 vivadetail 设置部署源失败。{"Code":"BadRequest","Message":"Repository 'UpdateSiteSourceControl' 操作失败,出现 System.Net.WebException:远程服务器返回错误:(400) 错误请求。\r\n 在 System.Net.HttpWebRequest .EndGetResponse(IAsyncResult asyncResult)\r\n 在 System.Threading.Tasks.TaskFactory 1.FromAsyncCoreLogic(IAsyncResult iar, Func2 endFunction, Action1 endAction, Task1 个承诺,布尔 requiresSynchronization)\r\n--- 从先前引发异常的位置结束堆栈跟踪 ---\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)\r\n 在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n 在 Microsoft.Web.Hosting.Administration.SiteRepositoryProvider.TrackerContext.d__78.MoveNext()\r\n--- 堆栈跟踪从先前位置结束抛出异常 ---\r\n System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)\r\n System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)\r\n Microsoft.Web .Hosting.Administration.SiteRepositoryProvider.d__40.MoveNext()\r\n--- 在 System.Runtime 处从先前引发异常的位置结束堆栈跟踪 ---\r\n。CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)\r\n 在 Microsoft.Web.Hosting.Administration.BitbucketV2SiteRepositoryProvider.d__6.MoveNext()\r\n n--- 从先前引发异常的位置结束堆栈跟踪 ---\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (任务任务)\r\n 在 Microsoft.Web.Hosting.Administration.WebCloudController.<>c__DisplayClass35e.<b__359>d__363.MoveNext()\r\n--- 堆栈跟踪从上一个引发异常的位置结束 - --\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)\r\n 在 System.Runtime.CompilerServices.TaskAwaiter。HandleNonSuccessAndDebuggerNotification(任务任务)\r\n 在 Microsoft.Web.Hosting.Administration.Csm.Common.Helpers.AsyncHelper.RunSync[TResult](Func1 func)\r\n at Microsoft.Web.Hosting.Administration.WebCloudController.UpdateSiteSourceControl(String subscriptionName, String webspaceName, String name, SiteSourceControl siteSourceControl).","Target":null,"Details":[{"Message":"Repository 'UpdateSiteSourceControl' operation failed with System.Net.WebException: The remote server returned an error: (400) Bad Request.\r\n at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)\r\n at System.Threading.Tasks.TaskFactory1.FromAsyncCoreLogic(IAsyncResult iar, Func 2 endFunction, Action1 endAction, Task 1 promise, Boolean requiresSynchronization)\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at Microsoft.Web.Hosting.Administration.SiteRepositoryProvider.TrackerContext.<GetResponseAsync>d__78.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at Microsoft.Web.Hosting.Administration.SiteRepositoryProvider.<GetSSHKey>d__40.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at Microsoft.Web.Hosting.Administration.BitbucketV2SiteRepositoryProvider.<UpdateSiteSourceControl>d__6.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at Microsoft.Web.Hosting.Administration.WebCloudController.<>c__DisplayClass35e.<<UpdateSiteSourceControl>b__359>d__363.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at Microsoft.Web.Hosting.Administration.Csm.Common.Helpers.AsyncHelper.RunSync[TResult](Func1 func)\r\n 在 Microsoft.Web.Hosting.Administration.WebCloudController.UpdateSiteSourceControl(String subscriptionName, String webspaceName, String name, SiteSourceControl siteSourceControl)。"},{" Code":"BadRequest"},{"ErrorEntity":{"ExtendedCode":"05007","MessageTemplate":"Repository '{0}' 操作失败,出现 {1}。","Parameters":["UpdateSiteSourceControl" ,"System.Net.WebException: 远程服务器返回错误: (400) 错误请求。\r\n 在 System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)\r\n 在 System.Threading.Tasks.TaskFactory 1.FromAsyncCoreLogic(IAsyncResult iar, Func2结束函数,动作1 endAction, Task1 个承诺,布尔 requiresSynchronization)\r\n--- 从先前引发异常的位置结束堆栈跟踪 ---\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)\r\n 在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n 在 Microsoft.Web.Hosting.Administration.SiteRepositoryProvider.TrackerContext.d__78.MoveNext()\r\n--- 堆栈跟踪从先前位置结束抛出异常 ---\r\n System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)\r\n System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)\r\n Microsoft.Web .Hosting.Administration.SiteRepositoryProvider.d__40.MoveNext()\r\n--- 在 System.Runtime 处从先前引发异常的位置结束堆栈跟踪 ---\r\n。CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)\r\n 在 Microsoft.Web.Hosting.Administration.BitbucketV2SiteRepositoryProvider.d__6.MoveNext()\r\n n--- 从先前引发异常的位置结束堆栈跟踪 ---\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (任务任务)\r\n 在 Microsoft.Web.Hosting.Administration.WebCloudController.<>c__DisplayClass35e.<b__359>d__363.MoveNext()\r\n--- 堆栈跟踪从上一个引发异常的位置结束 - --\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)\r\n 在 System.Runtime.CompilerServices.TaskAwaiter。HandleNonSuccessAndDebuggerNotification(任务任务)\r\n 在 Microsoft.Web.Hosting.Administration.Csm.Common.Helpers.AsyncHelper.RunSync[TResult](Func1 func)\r\n at Microsoft.Web.Hosting.Administration.WebCloudController.UpdateSiteSourceControl(String subscriptionName, String webspaceName, String name, SiteSourceControl siteSourceControl)"],"Code":"BadRequest","Message":"Repository 'UpdateSiteSourceControl' operation failed with System.Net.WebException: The remote server returned an error: (400) Bad Request.\r\n at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)\r\n at System.Threading.Tasks.TaskFactory1.FromAsyncCoreLogic(IAsyncResult iar, Func 2 endFunction, Action1 endAction, Task 1 promise, Boolean requiresSynchronization)\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at Microsoft.Web.Hosting.Administration.SiteRepositoryProvider.TrackerContext.<GetResponseAsync>d__78.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at Microsoft.Web.Hosting.Administration.SiteRepositoryProvider.<GetSSHKey>d__40.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at Microsoft.Web.Hosting.Administration.BitbucketV2SiteRepositoryProvider.<UpdateSiteSourceControl>d__6.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at Microsoft.Web.Hosting.Administration.WebCloudController.<>c__DisplayClass35e.<<UpdateSiteSourceControl>b__359>d__363.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at Microsoft.Web.Hosting.Administration.Csm.Common.Helpers.AsyncHelper.RunSync[TResult](Func1 func)\r\n 在 Microsoft.Web.Hosting.Administration.WebCloudController.UpdateSiteSourceControl(String subscriptionName, String webspaceName, String name, SiteSourceControl siteSourceControl)。"}}], “内部错误”:null}

0 投票
1 回答
367 浏览

azure-web-app-service - Azure 上的多租户蓝绿部署

假设蓝色和绿色应用程序服务共享相同的数据库实例,您可以使用插槽来交换应用程序。您将如何处理破坏模式的更改,因为某些用户可能要发布一个不适用于新模式的请求?

根据我的理解,您似乎总是必须编写在两种情况下都可以工作的向后兼容代码来处理架构更改,这对我来说看起来不太理想。

0 投票
2 回答
289 浏览

azure - Azure 交换槽,当前处理请求完成了吗?

我对 Azure 中的交换槽存有疑问。阅读https://github.com/projectkudu/kudu/wiki/Understanding-site-swaps,很明显没有新的请求被丢弃。但是当前处理的请求会发生什么?

想象以下场景,客户调用一个需要 30 秒才能完成的 API 方法,在此请求的中间我创建了一个交换槽。当交换槽发生时,正在处理的请求会发生什么?

看了之前的链接,说新的staged slot重启了。但是它是否等待完成处理请求?还是在不等待完成当前请求的情况下重新启动?

谢谢

0 投票
1 回答
159 浏览

azure - Azure Web 应用部署槽 - 平衡到哪里去了?

我清楚地记得能够平衡两个部署槽之间的流量。

此功能是否已删除?因为它不再位于部署槽刀片中。

实现相同结果的最低成本(时间和基础设施)方法是什么?

0 投票
1 回答
1949 浏览

azure - 如何知道 Azure 函数是否在插槽中运行

函数可以知道它是否在插槽中运行吗?

如果在“暂存”插槽中,我想阻止执行功能。

更新

根据布鲁斯的回答(再次感谢好友),我写了那篇博文http://www.frankysnotes.com/2017/09/how-to-know-when-azure-function-is.html

0 投票
0 回答
187 浏览

azure - Azure 部署槽未使用来自 VSTS 的新代码进行更新

我有一个部署槽演示,我想使用新应用程序进行更新。Azure 和 VSTS 都确认发布到插槽是成功的。分别通过持续交付选项卡和发布页面。但是,当我单击部署槽的 URL 时,我会转到旧应用程序。任何帮助表示赞赏。