public override void OnActionExecuting(System.Web.Http.Controllers.HttpActionContext filterContext) { if (!Disabled) { if (!Disabled) { if (_settingProvider == null) { throw new Exception("IMaintenanceSettingProvider must be provided when Disabled is false."); } var startTime = _settingProvider.StartTimeUtc; var endTime = _settingProvider.EndTimeUtc; var warningLead = _settingProvider.WarningLeadTime; var maintenanceWarningMessage = _settingProvider.MaintenanceWarningMessage; bool canBypass = _settingProvider.CanByPass(HttpContext.Current.User); var requestUrl = filterContext.Request.RequestUri; if (!canBypass && startTime != default(DateTime) && DateTime.UtcNow >= startTime) { if (endTime == default(DateTime) || DateTime.UtcNow <= endTime) { filterContext.Response = new HttpResponseMessage(HttpStatusCode.OK); //response doesn't work string fullyQualifiedUrl = _settingProvider.GetMaintenanceUrl(requestUrl); //response.Headers.Location = new Uri(fullyQualifiedUrl); filterContext.Response.Headers.Add("FORCE_REDIRECT", fullyQualifiedUrl); return; } } if (startTime != default(DateTime) && startTime > DateTime.UtcNow && warningLead > 0) { CookieHeaderValue cookie = filterContext.Request.Headers.GetCookies(KeyMaintenanceWarningCookie).FirstOrDefault(); if (cookie == null || cookie[KeyMaintenanceWarningCookie].Value != "1") { var difference = (startTime - DateTime.UtcNow); if (difference.TotalSeconds < warningLead) { SessionMessageManager.SetMessage(MessageType.Warning, MessageBehaviors.Modal, maintenanceWarningMessage, KeyMaintenanceWarningMessage); CookieHeaderValue newCookie = new CookieHeaderValue(KeyMaintenanceWarningCookie, "1"); newCookie.HttpOnly = true; filterContext.Response.Headers.AddCookies(new CookieHeaderValue[] { newCookie }); } } } } base.OnActionExecuting(filterContext); } }
public override void OnActionExecuting(ActionExecutingContext filterContext) { if (!Disabled) { if (_settingProvider == null) { throw new Exception("IMaintenanceSettingProvider must be provided when Disabled is false."); } var startTime = _settingProvider.StartTimeUtc; var endTime = _settingProvider.EndTimeUtc; var warningLead = _settingProvider.WarningLeadTime; var maintenanceWarningMessage = _settingProvider.MaintenanceWarningMessage; bool canBypass = _settingProvider.CanByPass(filterContext.HttpContext.User); var requestUrl = filterContext.HttpContext.Request.Url; if (!canBypass && startTime != default(DateTime) && DateTime.UtcNow >= startTime) { if (endTime == default(DateTime) || DateTime.UtcNow <= endTime) { filterContext.Result = new RedirectResult(_settingProvider.GetMaintenanceUrl(requestUrl)); } } else if (startTime != default(DateTime) && startTime > DateTime.UtcNow && warningLead > 0) { if (filterContext.HttpContext.Request.Cookies[KeyMaintenanceWarningCookie] == null || filterContext.HttpContext.Request.Cookies[KeyMaintenanceWarningCookie].Value != "1") { var difference = (startTime - DateTime.UtcNow); if (difference.TotalSeconds < warningLead) { SessionMessageManager.SetMessage(MessageType.Warning, MessageBehaviors.Modal, maintenanceWarningMessage, KeyMaintenanceWarningMessage); HttpCookie cookie = new HttpCookie(KeyMaintenanceWarningCookie); cookie.Value = "1"; cookie.HttpOnly = true; filterContext.HttpContext.Response.Cookies.Add(cookie); } } } } base.OnActionExecuting(filterContext); }
public ActionResult AjaxMessage(SessionMessageViewModel vm) { SessionMessageManager.SetMessage(vm.Type, vm.Behaviors, vm.Message); return(View("Index")); }
public ActionResult Index(SessionMessageViewModel vm) { ViewBag.Message = "Message page."; SessionMessageManager.SetMessage(vm.Type, vm.Behaviors, vm.Message); return(View(vm)); }