【问题标题】:.NET Core Web Application - app_offline equivalent / Safely stop web application for maintenance.NET Core Web 应用程序 - app_offline 等效/安全停止 Web 应用程序进行维护
【发布时间】:2019-01-21 16:56:45
【问题描述】:

如果使用 IIS 托管 Web 应用程序,我知道有一个 app_offline.htm 文件可以使用,但我正在使用 apache 在 Linux 环境中托管 .NET 核心 Web 应用程序。任何人都知道在这种情况下最安全的方法是让应用离线,这样我就可以在不破坏任何东西的情况下对我的应用进行更改?

编辑:目的是保持网站在线,但在维护任务完成并重新启动应用程序之前阻止登录或 Web 应用程序内的任何交互。

【问题讨论】:

    标签: apache web-applications centos .net-core offline


    【解决方案1】:

    经过一些研究,我通过使用 ActionFilter 做了一些应该满足“app_offline”目的的东西。

    使用依赖注入,此过滤器采用我的 appsettings.json 中设置的布尔值,如果设置为 true,它将被读入操作过滤器并将用户重定向到“停机维护”页面。据我了解,如果在运行时更改,使用 IOptionsSnapshot 代替 IOptions 将获得该值。当您有一个面向公众的网站但只希望后端应用程序阻止任何操作,直到做出更改并重新启动应用程序时,这也很好。下面是我的 ActionFilter 的示例。我唯一不喜欢的是这个过滤器必须在应用程序中的几乎每个控制器上设置。我更愿意提出一些可以在管道中尽快检查的东西,所以如果有人有更好的方法,我很乐意看到它。

    private readonly ServiceSettings _settings;
    
    public AppStateAttribute(IOptionsSnapshot<ServiceSettings> options)
    {
        _settings = options.Value;
    }
    
    public override void OnActionExecuting(ActionExecutingContext context)
    {
        if(_settings.AppOffline)
        {
            var redirectOnFail = "/maintenance";
    
            context.HttpContext.Response.Redirect(redirectOnFail, true);
        }
    
        base.OnActionExecuting(context);
    }
    

    【讨论】:

      猜你喜欢
      • 2010-09-26
      • 1970-01-01
      • 2019-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-29
      • 2013-08-12
      相关资源
      最近更新 更多