ASP .NET MVC - 更改 URL.Action 使用的域?

发布于 2024-12-08 18:47:46 字数 339 浏览 1 评论 0原文

我有一个网站,有两个域指向相同的内容。我们将它们称为 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。

这可以集中完成吗,而不是我遍历整个站点并对其进行硬编码?

谢谢, 艾伦

I have a website that has two domains pointing to the same content. Let's call them www.domainA.com and www.domainB.com where www.domainA.com/Page is the same as www.domainB.com/Page.

Every page on the site has a number of common navigation links (and others) that are constructed using a mixture of Url.Action and Html.ActionLink calls. The resulting urls are based on the current domain. Because www.domainA.com is the primary domain, I would like any links generated from www.domainB.com to be based on www.domainA.com.

Can this be done centrally, rather than me going around the whole site and hard-coding it?

Thanks,
Alan

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

我不吻晚风 2024-12-15 18:47:46

我最终使用此处的解决方案来指示 IIS 重写对我的旧域的请求。

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

艾伦

I ended up using the solution here to instruct IIS to rewrite requests to my old domain.

Hope this helps others with the same requirement.

Alan

梦幻之岛 2024-12-15 18:47:46

您可以通过使用继承自 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 */));

You can fix this by having custom route objects, that inherit from System.Web.Routing.Route.

For instance:

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;
    }
}

Then in your global.asax, where you register your routes use:

routes.Add(new MultipleDomainRoute(/* args */));
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文