首页 > 解决方案 > 有没有办法从代码中获取完整的 URL 到其他控制器方法?

问题描述

我有 Asp.Net Core Web 应用程序。带以下控制器

[Produces("application/json")]
[Route("api/[controller]")]
public class TestController
{
    [HttpGet]
    [Route("firstroute")]
    public async Task<IActionResult> FirstMethod()
    {
        ...Some code...
    }

    [HttpGet]
    [Route("secondroute")]
    public async Task<IActionResult> SecondMethod()
    {
        ...
        SomeMethod(redirectLink)
        ...
    }          
}

我需要的是获得完全组装的重定向链接到 FirstMethod(它可能类似于:“ http://localhost/api/test/firstroute ”)。我不需要 RedirectToAction,而是精确的 Url 作为字符串。没有设法在 this.Url 或 Microsoft.AspNetCore.Http.Extensions 中找到任何合适的方法。

this.Request.GetDisplayUrl() 以适当的格式返回结果,但仅适用于被调用的方法。

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

解决方案


您可以使用来自HttpContext.Request的数据,如下所示

var Url = string.Format("{0}://{1}{2}", HttpContext.Request.Scheme,HttpContext.Request.Host,"/api/firstroute");

并通过重定向

return Redirect(Url);

推荐阅读