0

MVC 3 アプリケーションのサブドメインに関して、イライラするほど困惑する問題が発生しています。以下のコードを使用すると、サブドメインは毎回ドメインのルートに戻ります。

subdomain.mydomain.com と入力すると、domain.com?nr=0 にルーティングされます。なぜ、またはコードのどこにクエリ文字列値を追加しているのかわかりません。

 public class SubdomainRoute : 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 (!String.IsNullOrEmpty(subDomain) && subDomain != "www" && subDomain != "mydomain")
            {
                var routeData = new RouteData(this, new MvcRouteHandler());
                routeData.Values.Add("controller", "External"); 
                routeData.Values.Add("action", "CoolAction"); 
                routeData.Values.Add("subdomain", subDomain);

                return routeData;
            }
            else
                return null;
        } 
}

フォーム認証を無効にしましたが、問題は解決しませんでした。また、先頭に www を追加する URL リライトもあります。www. がありません - それも削除しましたが、修正されませんでした。以下は、私の Global.asax の RegisterRoutes です。

    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
        routes.IgnoreRoute("elmah.axd");

        routes.Add(null, new SubdomainRoute());

        routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new { controller = "Home", action = "Index", id = UrlParameter.Optional },
            new[] { "MyProject.UI.Web.Controllers" }
        );
        routes.MapRoute("NotesController",
                        "Notes/{noteDestinationType}/{noteDestinationGuid}",
                        new { controller = "Notes", action = "SaveNote" });
    }

私は一日中これに頭をぶつけていましたが、あきらめました。助けを求めています。ティア。

4

1 に答える 1