public IDictionary <string, object> LoadTempData(ControllerContext controllerContext)
        {
            var cookie = controllerContext.GetCookie(UNLOCKED_TEMP_DATA_COOKIE_NAME);

            if (cookie == null)
            {
                return(new Dictionary <string, object>(3));
            }
            var cookieValue = cookie.Value;

            if (string.IsNullOrWhiteSpace(cookieValue))
            {
                return(new Dictionary <string, object>(3));
            }
            var tempData = new Dictionary <string, object>(3);

            try
            {
                var bytes = Convert.FromBase64String(cookieValue);
                var data  = MachineKey.Unprotect(bytes);
                tempData =
                    (Dictionary <string, object>)StateBinarySerializer.Deserialize <Dictionary <string, object> >(data);
                if (AutoRemove)
                {
                    controllerContext.ExpireCookie(UNLOCKED_TEMP_DATA_COOKIE_NAME);
                }
            }
            // ReSharper disable once EmptyGeneralCatchClause
            catch
            {
            } // Omit cookie manipulations.
            return(tempData);
        }