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

本文关键字:Link 生成 HTTPS 链接 Url Web API | 更新日期: 2023-09-27 18:08:46

我需要生成一个ASP的绝对url。. NET Web API,用于以后的回调/重定向。

可以使用

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

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

url总是需要使用https生成。是否有一个参数或路由值可以传递给Url。链接实现这个吗?

谢谢。

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

对于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" });