はじめに:MapRouteパラメータのデフォルト値としてCookie値を設定するにはどうすればよいですか?
私は多言語Webアプリケーションを開発しています。管理者は新しい言語を作成できます(この情報はデータベースに保存されています)。したがって、言語はコードのどこかにハードコードされません。ユーザーの優先言語はブラウザのクッキーに格納されます。
今、私はこのことからURLルートを設定する:これに
www.host.com/home/about
:
www.host.com/{lang}/home/about
RouteConfig.csは、次のようになります。
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.LowercaseUrls = true;
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
foreach (Route r in routes)
{
r.Url = "{lang}/" + r.Url;
if (r.Defaults == null)
r.Defaults = new RouteValueDictionary();
r.Defaults.Add("lang", ServiceLocalization.GetLanguageFromBrowserCookie());
}
}
}
パラメータ{LANG}が追加されますすべてのリクエストURLに私はクッキーからデフォルト値を設定する必要があります。サービス方法GetLanguageFromBrowserCookie()
は、HttpContext.Current.Request.Cookies
オブジェクトを使用して、クライアントから送信されたクッキーにアクセスします。
しかし、HttpContext.Current.Request
オブジェクトは、要求処理パイプラインのこの段階ではアクセスできません。そして私はこのエラーを受け取ります:"このコンテキストではリクエストは利用できません"
クッキー値を持つMapRouteパラメータをフェッチする方法はありますか?