1. ホーム
  2. asp.net-mvc

[解決済み】ASP.NET MVCのルートをサブドメインに基づいて作成することは可能ですか?

2022-04-03 10:53:14

質問

ASP.NET MVCのルートで、サブドメイン情報を使ってルートを決定することは可能でしょうか? 例えば

  • ユーザー1 .ドメイン.com 一箇所に集まる
  • ユーザー2 .ドメイン.com が別のものになるのか?

あるいは、これらの両方が同じコントローラ/アクションに行くようにするために username パラメータは?

解決方法は?

新しいルートを作成し、global.asaxのRegisterRoutesでルートコレクションに追加することで可能です。 以下は、カスタムルートの非常にシンプルな例です。

public class ExampleRoute : RouteBase
{

    public override RouteData GetRouteData(HttpContextBase httpContext)
    {
        var url = httpContext.Request.Headers["HOST"];
        var index = url.IndexOf(".");

        if (index < 0)
            return null;

        var subDomain = url.Substring(0, index);

        if (subDomain == "user1")
        {
            var routeData = new RouteData(this, new MvcRouteHandler());
            routeData.Values.Add("controller", "User1"); //Goes to the User1Controller class
            routeData.Values.Add("action", "Index"); //Goes to the Index action on the User1Controller

            return routeData;
        }

        if (subDomain == "user2")
        {
            var routeData = new RouteData(this, new MvcRouteHandler());
            routeData.Values.Add("controller", "User2"); //Goes to the User2Controller class
            routeData.Values.Add("action", "Index"); //Goes to the Index action on the User2Controller

            return routeData;
        }

        return null;
    }

    public override VirtualPathData GetVirtualPath(RequestContext requestContext, RouteValueDictionary values)
    {
        //Implement your formating Url formating here
        return null;
    }
}