2017-10-20 47 views
0

我需要生成語言Cookie「Abp.Localization.CultureName」忽略應用程序路徑。可能忽略語言Cookie中的應用程序路徑

我在源代碼中發現這一部分:

protected virtual void SetCultureToCookie(HttpContext context, string culture) 
    { 
     context.Response.SetCookie(
      new HttpCookie(_webLocalizationConfiguration.CookieName, culture) 
      { 
       Expires = Clock.Now.AddYears(2), 
       Path = context.Request.ApplicationPath 
      } 
     ); 
    } 

我怎麼可以重寫呢?

THX

回答

0

子類CurrentCultureSetter覆蓋:

public class MyCurrentCultureSetter : CurrentCultureSetter 
{ 
    protected override void SetCultureToCookie(HttpContext context, string culture) 
    { 
     // ... 
    } 
} 

而且在你的模塊PreInitialize()方法更換服務:

Configuration.ReplaceService<ICurrentCultureSetter, MyCurrentCultureSetter>(); 
+0

THX阿龍,我創建了我的自定義類和部分工作。 通過我找到類AbpLocalizationController用下面的代碼的代碼展望: 公共虛擬的ActionResult ChangeCulture ... ... Response.Cookies.Add( 新的HttpCookie(_webLocalizationConfiguration.CookieName,cultureName) { 過期= Clock.Now.AddYears(2), Path = Request.ApplicationPath } ); 這是爲什麼?我認爲是多餘的,無論如何,我也將覆蓋這 –

+0

這是用在這裏:https://github.com/aspnetboilerplate/module-zero-core-template/search?q=ChangeCulture – aaron

+0

是的我知道這是用在基地本地化的MVC控制器,我真正的問題是關於重複,爲什麼cookie創建在兩個地方?在CurrentCultureSetter類中集中創建cookie不是更好嗎?還因爲模塊Abp.Web.Mvc取決於模塊Abp.Web –