Dotnet Core API - 获取控制器方法的 URL
Posted
技术标签:
【中文标题】Dotnet Core API - 获取控制器方法的 URL【英文标题】:Dotnet Core API - Get the URL of a controller method 【发布时间】:2019-06-27 14:01:15 【问题描述】:我正在开发一个 API,它有两个控制器:PicturesController
和 AccountController
。 PicturesController
上有一个返回图像的方法,我想知道如何获取它的 URL。
在另一个 PicturesController
方法中,我使用下面的代码获得了 URL:
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");
...
【问题讨论】:
您的代码显示为GetPicture
,但该操作称为Get
【参考方案1】:
问题是你在这段代码中使用了GetPicture
:
var url = Url.Action("GetPicture", "PicturesController", new id = picture.Id , Request.Scheme);
Url.Action
的第一个参数是动作的名称,在你的例子中是Get
,所以应该是
var url = Url.Action("Get", "PicturesController", new id = picture.Id , Request.Scheme);
【讨论】:
避免使用文字字符串,改用 nameof(GetPicture) 和 nameof(PicturesController)。以上是关于Dotnet Core API - 获取控制器方法的 URL的主要内容,如果未能解决你的问题,请参考以下文章
在 dotnet core web api ::ffff:127.0.0.1 中获取客户端 IP 地址
Web api dotnet core 中的 Api 版本控制错误的自定义错误响应
在 ASP.NET MVC 5 控制器中使用 POST 从 dotnet Core Web API 下载文件
无法从 API(dotNet Core)获取数据(使用角度)没有“Access-Control-Allow-Origin”