2011-10-07 65 views
0

我有一个网站有两个域指向相同的内容。我们称他们为www.domainA.com和www.domainB.com,其中www.domainA.com/Page与www.domainB.com/Page相同。ASP .NET MVC - 更改URL.Action使用的域名?

网站上的每个页面都有许多通用导航链接(以及其他),这些链接是使用Url.Action和Html.ActionLink调用混合构建的。生成的网址是基于当前网域的。由于www.domainA.com是主要域名,我希望www.domainB.com生成的任何链接都基于www.domainA.com。

这可以集中完成,而不是绕过整个网站并对其进行硬编码吗?

谢谢你,艾伦

回答

1

我结束了使用的解决方案here指示IIS重写请求我旧域名。

希望这可以帮助其他人有相同的要求。

Alan

0

您可以通过具有自定义路由对象,从System.Web.Routing.Route继承解决这个问题。

例如:

public class MultipleDomainRoute : System.Web.Routing.Route 
{ 
    // ... 

    public override VirtualPathData GetVirtualPath(RequestContext requestContext, RouteValueDictionary values) 
    { 
     VirtualPathData path = base.GetVirtualPath(requestContext, values); 

     if (requestContext.Url.Host == "domain2.com") { 
      path.VirtualPath = "http://domain1.com" + path.VirtualPath; 
     } 

     return path; 
    } 
} 

然后在您的Global.asax的,在那里您注册路由使用:

routes.Add(new MultipleDomainRoute(/* args */)); 
+0

感谢Jan.这看起来像我需要的东西。但是,我需要实现一个构造函数。最小构造函数使用url模式和一个IRouteHandler实例。我需要自己实现一个IRouteHandler吗? –

+0

您可以将构造函数重定向回基类。在这里看到一个例子:http://coderjournal.com/2008/03/force-mvc-route-url-lowercase/。 –