public BaseController(IConfiguracionRepository _configuracionRepository,
                              IMensajeRepository _mensajeRepository,
                              ILoggerService _loggerService)
        {
            configuracionRepository = _configuracionRepository;
            mensajeRepository       = _mensajeRepository;
            loggerService           = _loggerService;

            try
            {
                ViewData.Add("URL_TARJETAS_CREDITO_WEB", configuracionRepository.ObtenerConfiguracionPorClave(URL_TARJETAS_CREDITO_WEB).Valor);
                ViewData.Add("URL_INDIVIDUOS_WEB", GetBaseUrl());

                System.Reflection.Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly();
                FileVersionInfo            fvi      = FileVersionInfo.GetVersionInfo(assembly.Location);
                ViewData.Add("VERSION", fvi.ProductVersion);

                var url560wsBancor = configuracionRepository.ObtenerValorPorClave("URL_560_wsBancor_Seguridad");

                var wsBancorSeg = new wsBancorSeguridad._560_wsBancor_Seguridad(url560wsBancor, Int32.MaxValue);
                var CanalId     = 0;
                var CanalCodigo = 0;


                if (System.Web.HttpContext.Current.Session["CanalId"] == null && System.Web.HttpContext.Current.Session["CanalCodigo"] == null)
                {
                    wsBancorSeg.TipoDeUsuarioAvanzado(SisId, UserId, ref CanalId, ref CanalCodigo);
                    System.Web.HttpContext.Current.Session["CanalId"]     = CanalId.ToString();
                    System.Web.HttpContext.Current.Session["CanalCodigo"] = CanalCodigo.ToString();
                }

                if (System.Web.HttpContext.Current.Session["Usuario"] == null)
                {
                    var Usuario = wsBancorSeg.LeeUsuario_ByID(UserId);
                    System.Web.HttpContext.Current.Session["Usuario"] = Usuario;
                }
            }
            catch (Exception ex)
            {
                loggerService.ErrorLog(ex);
            }
        }
        protected override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            LimpiarCarpetaFiles();
            if (!filterContext.ActionDescriptor.GetCustomAttributes(false).Any(x => x is NeedsAuthorization))
            {
                return;
            }

            var authAttribute = (NeedsAuthorization)filterContext.ActionDescriptor.GetCustomAttributes(false).First(x => x is NeedsAuthorization);

            var windowsUser = UserId;

            if (UserId.IndexOf('\\') >= 0)
            {
                windowsUser = UserId.Split('\\')[1];
            }

            var wsSeguridad = new __560_wsBancor_Seguridad._560_wsBancor_Seguridad(configuracionRepository.ObtenerValorPorClave("URL_560_wsBancor_Seguridad"));
            var sistemaId   = configuracionRepository.ObtenerValorPorClave <Int32>("SistemaId");
            var _menuList   = wsSeguridad.MenuPorSistemaPorUsuario(sistemaId, windowsUser, "0", 0).NodosMenu.ToList();

            var _controllerName = filterContext.RouteData.Values["controller"];
            var _actionName     = filterContext.RouteData.Values["action"];

            if (!String.IsNullOrEmpty(authAttribute.ActionValidate))
            {
                _actionName = authAttribute.ActionValidate;
            }

            var Url = new UrlHelper(filterContext.RequestContext);

            if (!CanAccess(_actionName.ToString(), _controllerName.ToString(), _menuList))
            {
                loggerService.Trace($"El usuario {UserId} no puede acceder al sitio Controller {_controllerName.ToString()} Action {_actionName.ToString()}");
                filterContext.Result = new RedirectResult(Url.Action("AccesoDenegado", "Base"));
            }

            base.OnActionExecuting(filterContext);
        }