C# 使用Url.link在Web API中生成HTTPS链接

C# 使用Url.link在Web API中生成HTTPS链接,c#,asp.net,asp.net-web-api,C#,Asp.net,Asp.net Web Api,我需要生成一个指向ASP.NET Web API的绝对url,以便以后进行回调/重定向 链接可以使用 Url.Link("RouteName", new { controller = "Controller", action = "Action" }); 这将返回正确的Url,但是,我需要它始终是https。Link似乎使用当前请求的方案生成Url。例如,如果生成url的请求类似于url,那么url.Link将生成一个http url。如果生成url的请求是url.Link,则生成https

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

链接可以使用

Url.Link("RouteName", new { controller = "Controller", action = "Action" });
这将返回正确的Url,但是,我需要它始终是https。Link似乎使用当前请求的方案生成Url。例如,如果生成url的请求类似于url,那么url.Link将生成一个http url。如果生成url的请求是url.Link,则生成https url

url需要始终使用https生成。是否有一个参数或路由值可以传递到Url.Link来实现这一点


谢谢。

使用
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" });

是的,我希望有更简单的内置功能,但看起来不存在。必须要做的一件事是,UriBuilder上的端口需要显式设置,否则它会保留端口80并导致错误<代码>secureUrlBuilder.Port=443