【问题标题】:Change ASP.NET MVC site language based on url referrer根据 url referrer 更改 ASP.NET MVC 站点语言
【发布时间】:2015-02-25 16:33:51
【问题描述】:

我想我找到了一种方法(如下所述)来实现以下请求的场景,但我将描述完整的上下文,以防我错过了针对此问题的更简单和/或更简洁的解决方案。

上下文

我有一个使用以下内容的多元文化网站:ASP.NET MVC 5、EF 6.1、ASP.NET Identity 2.2、SimpleInjector。它通过 Amazon RDS 上的 sql server 托管在 Amazon EC2 上,而 URL 则在 www.register.it 注册。我通过 FB、Linkedin、Google 和 Paypal 支付实现外部 OAuth 登录。

我需要多个 url(www.url-en.com、www.url-it.com 等)都指向同一个站点,然后根据用户输入的 url 更改语言和 _layout(母版页) .

解决办法

最初我考虑将所有 url 指向我网站的 ip,但这样我需要配置多个 ssl 证书(我什至不知道这是否可能),更重要的是,我不会能够管理来自外部登录服务和贝宝付款的回调。

所以我在注册商级别为每个 url 配置了重定向以指向主 url(英文),所以我可以读取 global.asax Application_Start 中的 HTTP_REFERRER 变量并根据引荐来源网址设置文化 cookie。 我在 Home 控制器中有一个 ActionMethod,用于设置区域性 cookie(站点页面上的语言选择器也使用相同),然后我有一个自定义 RazorViewEngine 来选择本地化视图(如果存在)。

问题是,应用程序池处于集成模式,我无法读取 Application_Start 中的请求对象,因此我尝试在 OWIN 配置方法中执行此操作,但 HttpContext.Current.Request.UrlReferrer 为空。我应该从 OWIN 上下文中获取推荐人吗?我怎么能那样做? 在javascript中检查url和referrer是否不同会更好/更简单?

谢谢 马特奥

【问题讨论】:

    标签: c# asp.net-mvc localization asp.net-identity owin


    【解决方案1】:

    为什么不从浏览器中检测文化而不是使用单独的 url?然后根据浏览器文化,您可以根据特定语言定制您的网址。

    这将解决您的多个 ssl 问题,因为您只需要一个用于主域。它还将修复支付网关的回调 url。

    http://www.url.com/en-us/
    http://www.url.com/es-es/
    

    【讨论】:

    • 我试图向客户解释这一点,但不幸的是他们想要这样,有多个网址,显然没有办法改变他们的想法
    • 呃...感觉自己更了解的客户是最好的!
    • 我认为这更像是一个与“本地化”网址相关的营销问题
    猜你喜欢
    • 2012-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-23
    • 2015-08-03
    • 2016-08-19
    • 2021-09-24
    • 2021-04-11
    相关资源
    最近更新 更多