.NET的核心Web应用程序 - app_offline当量/安全地停止了维护Web应用程序

问题描述 投票:4回答:1

如果托管与IIS的web应用程序,我知道有可以使用的app_offline.htm文件,但我托管在Linux环境中与Apache一个.NET核心的Web应用程序。任何人都知道最安全的做法就是在这种情况下采取的离线应用程序,这样我可以改变我的应用程序而不会破坏任何东西吗?

apache web-applications centos .net-core offline
1个回答
0
投票

一个小小的研究之后,我做了什么,应该使用一个ActionFilter服务的“app_offline”的目的。

使用依赖注入,该过滤器发生在我appsettings.json设置一个布尔值,如果设置为true,它的读入动作过滤器和用户重定向到一个“停机维护”页面。这是我的理解是,如果在运行时改变使用的,而不是IOptions IOptionsSnapshot将得到价值。这也是不错的,当你有一个面向公众的网站,但只希望后端应用程序,以防止任何动作,直到已经作了修改和应用程序重新启动。下面是我ActionFilter的一个例子。只是我不喜欢的是,这个过滤器被设置在几乎在每一个应用程序控制器。我喜欢想出的东西,可能在管道进行检查越早,因此,如果任何人有一个更好的方法,我很愿意看到它。

private readonly ServiceSettings _settings;

public ARAppStateAttribute(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);
}
© www.soinside.com 2019 - 2024. All rights reserved.