首页 > 解决方案 > 无法获取 Web API 控制器方法的 URL

问题描述

环境:C# Core 3.1 WebApi 项目。

在我的控制器中,我试图获取当前 URL,但得到一个空值。我使用 Url 类尝试了很多事情:

var x = Url.Link("https://localhost:44397/api/Account/Accounts/", new { a = 1, b = 2 });
var y = Url.RouteUrl("www.xyz.com", new { a = 3, b = 4 });
var url = Url.Link("GetAuthors", authorsResourceParameters);
var r = Url.RouteUrl("This route");
var yd = Url.Action("myAction", "myController", authorsResourceParameters, "https");

Url 类来自 Microsoft.AspNetCore.Mvc.Routing.EndpointRoutingUrlHelper。这是正确的命名空间吗?

我错过了什么?

标签: c#asp.net-core-webapi.net-core-3.1

解决方案


您可以使用以下代码:

var request = HttpContext.Request;

var uri = string.Concat(request.Scheme,"://",
                        request.Host.ToUriComponent(),
                        request.PathBase.ToUriComponent(),
                        request.Path.ToUriComponent(),
                        request.QueryString.ToUriComponent());

祝你好运。


推荐阅读