.NET Core Web API 控制器的多个路由
Multiple routes to a .NET Core Web API controller
在 .NET Core Web 中 API 我编写了一个用于访问文件的控制器(用于授权目的)。
控制器只需要一个路径,读取路径中的文件和 returns 文件(图像)以浏览器可以显示的方式。
控制器看起来像
[HttpGet("{path}", Name = "GetFile")]
public IActionResult GetFile(string path)
{
// read the file & content type
return File(f, contentType);
}
如果我只使用文件名(文件是控制器),一切正常,例如
http://localhost:61261/api/v1/Files/test.png
问题是,当我使用子目录时,路由失败并显示 404,并且未调用控制器方法。例如
http://localhost:61261/api/v1/Files/subdirectory/test.png
我将如何进行路由,在第二个示例中路径变量将是 "subdirectory/test.png"?
编辑:我正在寻找某种通配符,因为子目录可以像文件一样来来去去 uploaded/downloaded。
并且不可能使用静态文件,因为它们是 public(无法使用 authentication/authorization 并且文件不在 wwwwroot 中。
从可能重复的问题中提取相关信息:
在路径前添加一个星号解决了问题
[HttpGet("{*path}", Name = "GetFile")]
在 .NET Core Web 中 API 我编写了一个用于访问文件的控制器(用于授权目的)。
控制器只需要一个路径,读取路径中的文件和 returns 文件(图像)以浏览器可以显示的方式。
控制器看起来像
[HttpGet("{path}", Name = "GetFile")]
public IActionResult GetFile(string path)
{
// read the file & content type
return File(f, contentType);
}
如果我只使用文件名(文件是控制器),一切正常,例如
http://localhost:61261/api/v1/Files/test.png
问题是,当我使用子目录时,路由失败并显示 404,并且未调用控制器方法。例如
http://localhost:61261/api/v1/Files/subdirectory/test.png
我将如何进行路由,在第二个示例中路径变量将是 "subdirectory/test.png"?
编辑:我正在寻找某种通配符,因为子目录可以像文件一样来来去去 uploaded/downloaded。 并且不可能使用静态文件,因为它们是 public(无法使用 authentication/authorization 并且文件不在 wwwwroot 中。
从可能重复的问题中提取相关信息:
在路径前添加一个星号解决了问题
[HttpGet("{*path}", Name = "GetFile")]