Dotnet Core API-获取控制器方法的URL

时间:2019-02-03 17:59:27

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

我正在开发一个API,它有两个控制器:PicturesControllerAccountControllerPicturesController上有一种返回图像的方法,我想知道如何获取其URL。

在另一个PicturesController方法上,我使用下面的代码获取了网址:

var url = Url.RouteUrl("GetPicture", new { id = picture.Id }, Request.Scheme);

但是我需要从另一个控制器(AccountController)获取相同方法的URL。

我尝试了以下代码,但结果为空。

var url = Url.Action("GetPicture", "PicturesController", new { id = picture.Id }, Request.Scheme);

那是方法:

public class PicturesController : Controller
{
  ...

   // GET api/pictures/id
    [HttpGet("{id}", Name = "GetPicture")]
    public async Task<ActionResult> Get(Guid id)
    {
        var picture = await _context.Pictures.FirstOrDefaultAsync(p => p.IsActive() && p.Id == id);

        if (picture == null)
            return NotFound();

        return File(picture.PictureImage, "image/jpg");
    }
  ...
}

1 个答案:

答案 0 :(得分:1)

问题是您在此代码中使用GetPicture

var url = Url.Action("GetPicture", "PicturesController", new { id = picture.Id }, Request.Scheme);

Url.Action的第一个参数是 action 的名称,在您的情况下为Get,因此应为

var url = Url.Action("Get", "PicturesController", new { id = picture.Id }, Request.Scheme);