我很抱歉,如果这有点令人费解,但我只是想更好地了解Url.RouteUrl()在C#.Net环境中的运作方式。
我有一个应用程序通过Publish Web功能部署到两个单独的服务器;一个用于测试,另一个用于现场制作。实时生产服务器面向Web - 这意味着它可以通过注册域访问。测试服务器是内部的,只能通过网络访问。
此应用程序的一个功能是发送一封电子邮件,其中包含链接到应用程序中特定页面的URL。它使用类似于:
的内容获取此URLUrl.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()方法中调用域名地址的位置以及如何根据我的需要对其进行更改吗?
感谢。
答案 0 :(得分:1)
您使用的重载容易出错,我建议使用this重载。
将主机保存在Web配置文件中,两种环境都不同。并在主机参数中传递。
////重载使用
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" );