2017-10-20 44 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 –