我可以在使用 Url.RouteUrl() 时设置域名吗?

Can I set the domain name while using Url.RouteUrl()?

很抱歉,如果这有点令人费解,但我只是想更好地理解 Url.RouteUrl() 在 C# .Net 环境中的工作方式。

我有一个应用程序通过发布 Web 功能部署到两个独立的服务器;一个用于测试,另一个用于现场制作。现场制作服务器是面向网络的——这意味着它可以通过注册域访问。测试服务器是内部的,只能通过网络访问。

此应用程序的功能之一是发送一封电子邮件,其中 URL 链接到应用程序中的特定页面。它使用如下所示的内容获得此 URL:

Url.RouteUrl("Default", new { controller = "foo", action = "bar"}, "http");

这将解析为一个 URL,它由内部服务器地址构成,无论它是测试服务器还是生产服务器。

我希望能够将其解析为测试部署的内部服务器地址和生产部署的注册域名,但我似乎无法弄清楚这些域在哪里正在建立中。

我已经检查了部署设置(发布),但它们的编写似乎符合我的预期。

最终我要寻找的结果如下所示:

Testing:: http://testserver.internal.domain/foo/bar
Production:: http://www.example.com/foo/bar

任何人都可以向我解释在 Url.RouteUrl() 方法中从哪里调用域地址以及如何更改它以满足我的需要?

谢谢。

您使用的重载容易出错,我建议使用 this 重载。

将主机保存在网络配置文件中,两种环境都不同。并将其传递给主机参数。

//// 重载使用

public virtual string RouteUrl(
    string routeName,
    RouteValueDictionary routeValues,
    string protocol,
    string hostName
)

用法示例。 1.测试 2. 制作

Url.RouteUrl("Default", new RouteValueDictionary(new { action = "foo", controller = "bar" }),
"http", "test.local.url" );


Url.RouteUrl("Default", new RouteValueDictionary(new { action = "foo", controller = "bar" }),
"http", "production.public.url" );