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" });
}
私は一日中これに頭をぶつけていましたが、あきらめました。助けを求めています。ティア。