ASP .NET MVC - Изменить домен, используемый URL.Action? - PullRequest
0 голосов
/ 07 октября 2011

У меня есть веб-сайт с двумя доменами, указывающими на один и тот же контент.Давайте назовем их www.domainA.com и www.domainB.com, где www.domainA.com/Page совпадает с www.domainB.com/Page.

Каждая страница на сайте имеет ряд общихнавигационные ссылки (и другие), которые создаются с использованием смеси вызовов Url.Action и Html.ActionLink.Полученные URL-адреса основаны на текущем домене.Поскольку www.domainA.com является основным доменом, я хотел бы, чтобы все ссылки, сгенерированные с www.domainB.com, основывались на www.domainA.com.

Это можно сделать централизованно, а не обходить менявесь сайт и жестко его кодировать?

Спасибо, Алан

Ответы [ 2 ]

1 голос
/ 17 февраля 2012

В итоге я воспользовался решением здесь , чтобы дать IIS команду переписывать запросы на мой старый домен.

Надеюсь, что это поможет другим с таким же требованием.

Алан

0 голосов
/ 07 октября 2011

Это можно исправить с помощью пользовательских объектов маршрута, которые наследуются от 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 */));
...