小编Jér*_* S.的帖子

交换插槽时,为什么Azure应用服务会重新启动?

在生产中长期困扰这个问题,并且阅读了我能找到的所有内容(例如thisthisthat)之后,我进行了简单的测试。

  1. 创建一个空的asp.net网站
  2. 在Application_Start中,向您发送电子邮件或消息(我已经使用过PushBullet),以便您知道应用何时启动
  3. 创建一个新的应用程序服务计划和资源组
  4. 在Azure上创建网站并发布
  5. 创建一个临时部署插槽
  6. 交换分期/生产
  7. 再次发布网站,以便两个插槽都具有相同版本的网站

所以我有一个空的网站,没有连接字符串,没有插槽设置: 两个插槽均无变化

单击交换时,我将收到有关插槽重新启动的通知(每个插槽至少重新启动一次)。

为什么会这样呢?

更新:

在研究Mohit的答案之后,我需要更多说明。

  • 我们以Application_Start方法发送通知,如果我理解正确的话,该方法由AppInit事件触发。

  • 我不理解您所解释的行为。该顺序似乎对确保没有停机时间非常重要,但是您说不一定按该顺序进行。为什么需要重新启动生产槽的应用程序域?为什么用户会因为该网站已关闭而感到烦恼(不应该这样)?

  • 什么是“新交换”功能?“旧交换”有什么区别?对于我的测试,我只是使用门户进行了交换。

  • 您提到“新交换”在交换之前暂停。我想这只是意味着它等待applicationInitialization完成(例如/上的HTTP 200)?

  • 从昨天开始,我做了更多测试。在Application_Start方法中,我添加了一些Thread.Sleep来延长应用程序的启动时间。但是,当我调换产品时,无论是分期还是生产,都不会停机。我是否应该至少在应用程序启动期间经历登台停机时间?这是否意味着经过预热然后与生产交换的插槽实际上是另一个既未登台也不生产的临时插槽?

c# asp.net azure azure-web-app-service

5
推荐指数
1
解决办法
591
查看次数

Appbar背后的弹出窗口

当您希望应用扩展到全屏(包括状态栏和appbar)时,您必须执行以下操作:

var applicationView = Windows.UI.ViewManagement.ApplicationView.GetForCurrentView();
applicationView.SetDesiredBoundsMode(Windows.UI.ViewManagement.ApplicationViewBoundsMode.UseCoreWindow);
Run Code Online (Sandbox Code Playgroud)

然后,如果您想在appbar或应用中的任何位置设置弹出窗口,它们将显示在appbar后面:

    <Page.BottomAppBar>
        <CommandBar>
            <AppBarButton Icon="Preview" Label="Preview">
                <AppBarButton.Flyout>
                    <MenuFlyout>
                        <MenuFlyoutItem Text="Fit width" />
                        <MenuFlyoutItem Text="Fit height" />
                        <MenuFlyoutItem Text="Fit page" />
                    </MenuFlyout>
                </AppBarButton.Flyout>
            </AppBarButton>
        </CommandBar>
    </Page.BottomAppBar>
Run Code Online (Sandbox Code Playgroud)

结果 :

http://i.stack.imgur.com/oWAj9.png

列表视图中项目的弹出窗口也是如此.它们将显示在appbar后面:

在此输入图像描述

如何在appbar上显示弹出窗口?

c# winrt-xaml win-universal-app

3
推荐指数
1
解决办法
1619
查看次数