1

サーバーでホストされているサイトがあり、サブドメインがあります。私の Global.asax.cs には、以下のような地図ルートがあります

routes.MapRoute(
        "Default", // Route name
        "{controller}/{action}/{id}", // URL with parameters*
        new { controller = "ShoppingCart", action = "Index", 
        id = UrlParameter.Optional }
);

mysite.mydomain.com のようなサイトのサブドメインにアクセスすると、次のようなサブドメインにリダイレクトされます

routes.MapRoute(
        "Default", // Route name
        "{controller}/{action}/{id}", // URL with parameters*
        new { controller = "mySiteController", action = "Index", 
        id = UrlParameter.Optional }
);

しかし、私はこれを達成することができません。Global.asax.cs から、アクセスした URL に基づいて条件付きでルーティングするにはどうすればよいですか

前もって感謝します。

タラク

4

2 に答える 2

2

これを試して

routes.Add("DomainRoute", new DomainRoute( 
    "{Controller}.example.com", // Domain with parameters 
    "{action}/{id}",    // URL with parameters 
    new { controller = "Home", action = "Index", id = "" }  // Parameter defaults 
))

詳細については、ASP.NET MVC ドメイン ルーティングリンクを確認してください。

于 2013-09-03T06:37:58.607 に答える
1

このシナリオのカスタム ルート制約を作成することもできます。

public class DomainRouteConstraint : IRouteConstraint {
    string _host;

    public DomainRouteConstraint(string host) {
        _host = host;
    }

    public bool Match(HttpContextBase httpContext, 
                          Route route, 
                          string parameterName,        
                          RouteValueDictionary values, 
                          RouteDirection routeDirection) {
        return _host.Equals(httpContext.Request.Url.Host,
                            StringComparison.InvariantCultureIgnoreCase);
    }
}

次に、ルートで制約を使用します。

routes.MapRoute(
    "Default", // Route name
    "{controller}/{action}/{id}", // URL with parameters*
    new { controller = "mySiteController", 
          action = "Index", 
          id = UrlParameter.Optional}, // defaults
    new DomainRouteConstraint("mysite.mydomain.com")); // constraint

または (1 つのルートで複数の制約を使用するには):

routes.MapRoute(
    "Default", // Route name
    "{controller}/{action}/{id}", // URL with parameters*
    new { controller = "mySiteController", 
          action = "Index", 
          id = UrlParameter.Optional}, // defaults
    new { ignored = DomainRouteConstraint("mysite.mydomain.com"), 
          /* add more constraints here ... */ }); // constraints
于 2013-09-03T22:32:50.037 に答える