【发布时间】: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