【发布时间】:2018-04-11 15:38:19
【问题描述】:
在 MVC Core Web 应用程序中,使用“~”覆盖控制器方法上的路由前缀似乎会破坏 Url.RouteUrl 辅助方法。它返回 null 而不是正确的路由。
例子:
[Route("v{api-version:apiVersion}/[controller]")]
public class BooksController : ApiController
{
[HttpGet]
[Route("{bookId}", Name = "GetBook")]
public Book GetBook( int bookId )
{
}
// GET /v1/authors/1/books
[HttpGet]
[Route("~/v{api - version:apiVersion}/authors/{authorId:int}/books")]
public IEnumerable<Book> GetByAuthor(int authorId)
{
// do some stuff
string route = Url.RouteUrl( "GetBook", new { id = 1 });
}
}
我相信上面的例子会说明问题。从 Url.RouteUrl() 返回的路由为空。在不使用版本控制并从路由中删除“”的情况下,RouteUrl() 方法将正确地将 url 返回到 GetBook 方法。 它添加了导致问题的 aspnet-api-versioning nuget 包。
任何想法如何让 RouteUrl 在这种情况下工作?
【问题讨论】:
标签: c# .net-core asp.net-core-mvc asp.net-mvc-routing