使用Url.Link在Web API中生成HTTPS链接

时间:2014-06-16 15:39:57

标签: c# asp.net asp.net-web-api

我需要为ASP.NET Web API生成一个绝对URL,以便以后进行回调/重定向。

可以使用

生成链接
Url.Link("RouteName", new { controller = "Controller", action = "Action" });

这会返回正确的Url,但是,我需要它始终是https。 Url.Link似乎使用当前请求的方案生成URL。例如,如果生成网址的请求类似于http://www.myhost.com/controller/generateUrl,则Url.Link会生成一个http网址。如果生成网址的请求为https://www.myhost.com/controller/generateUrl,则Url.Link会生成https网址。

需要始终使用https生成网址。是否有可以传递给Url.Link的参数或路由值来实现此目的?

感谢。

1 个答案:

答案 0 :(得分:13)

使用Url.Link()

似乎无法做到

我会检查HttpRequest并将其更改为https,以使所有Url.Link()返回https链接。

类似的东西:

        if (Url.Request.RequestUri.Scheme != Uri.UriSchemeHttps)
        {
            var secureUrlBuilder = new UriBuilder(Url.Request.RequestUri);
            secureUrlBuilder.Scheme = Uri.UriSchemeHttps;
            Url.Request.RequestUri = new Uri(secureUrlBuilder.ToString());
        }

        // should now return https
        Url.Link("RouteName", new { controller = "Controller", action = "Action" });