/// <summary> /// ASP.NET에서 현재 요청과 관련된 현재 상태(예: 세션 상태)를 가져오는 경우 발생하는 이벤트에 대한 핸들러입니다.<br/> /// 사용자의 Locale 정보를 읽어서 현재 Context의 CultureInfo를 설정합니다. /// </summary> public virtual void OnBeginRequest(object sender, EventArgs e) { CultureInfo culture = null; // 사용자가 지정한 Locale을 사용할 경우 if (UseUserLocale) { try { var cultureName = CookieTool.Get(UserLocaleCookieName); // 쿠키에 User Locale 정보가 저장되어 있다면 if (cultureName.IsNotWhiteSpace()) { culture = new CultureInfo(cultureName); if (IsDebugEnabled) { log.Debug("쿠키로부터 User Locale 정보를 얻었습니다. User Locale=[{0}]", cultureName); } } else if (HttpContext.Current.Request.UserLanguages != null) { var language = HttpContext.Current.Request.UserLanguages.FirstOrDefault(); if (language.IsNotWhiteSpace()) { culture = new CultureInfo(language); if (IsDebugEnabled) { log.Debug("사용자 Browser의 UserLanguage중에 첫번째 것을 User Locale로 사용합니다. language=[{0}", language); } } } } catch (Exception ex) { if (log.IsInfoEnabled) { log.Info("쿠키로부터 User Locale 정보를 수집하는데 실패했습니다. 무시하고 시스템 기준값을 사용합니다."); log.Info(ex); } } } // 사용자 culture를 지정하지 못했다면, 현재 시스템의 Thread Context의 Culture를 지정합니다. if (culture.IsNullCulture()) { culture = CultureInfo.CurrentCulture; if (IsDebugEnabled) { log.Debug("시스템 설정 기준의 Locale을 사용합니다. Culture=[{0}]", culture.Name); } } SetCurrentCulture(culture); }
///<summary> /// 값을 읽어온다. ///</summary> ///<typeparam name="T">유형</typeparam> ///<param name="name">명</param> ///<param name="defaultValue">기본값</param> ///<returns>값</returns> public static T LoadValue <T>(string name, T defaultValue) { name.ShouldNotBeWhiteSpace("name"); return(WebTool.IsWebContext ? CookieTool.Get(name, defaultValue) : Local.Data[name].AsValue(defaultValue)); }