关于 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;
}
}
我禁用了我的表单身份验证,但这并没有解决它。我也有一个 URL 重写,前面加上 www。所有请求,如果 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" });
}
我整天都在敲我的头,我放弃了。我在寻求帮助。TIA。