我在现有的IdentityServer4项目中添加了一个netcore控制器。这是我的代码
col0
4.0 0.8
7.0 0.4
8.0 1.2
11.0 1.5
15.0 0.1
19.0 0.5
Name: col1, dtype: float64
我在startup.cs中也有以下代码行
namespace IdentityServer4.Quickstart.UI
{
public class VersionController : Controller
{
IVersionService _repository;
public VersionController(IVersionService repository)
{
_repository = repository;
}
[HttpGet(nameof(GetBackgroundId))]
public IActionResult GetBackgroundId()
{
return new OkObjectResult(_repository.GetBackgroundId());
}
[HttpPut(nameof(SetBackgroundId))]
public IActionResult SetBackgroundId([FromQuery]int id)
{
_repository.SetBackgroundId(id);
return new NoContentResult();
}
}
}
我可以通过以下网址访问帐户控制器
app.UseMvcWithDefaultRoute();
但是,我无法通过以下网址访问版本控制器:
http://localhost:5001/account/login
错误代码为404.
有什么问题?
答案 0 :(得分:1)
您缺少控制器的路由前缀。您正在使用属性路由,因此您需要包含整个所需的路由。
当前GetBackgroundId
控制器操作将映射到
http://localhost:5001/GetBackgroundId
添加路径到控制器
[Route("[controller]")]
public class VersionController : Controller {
IVersionService _repository;
public VersionController(IVersionService repository) {
_repository = repository;
}
//Match GET version/GetBackgroundId
[HttpGet("[action]")]
public IActionResult GetBackgroundId() {
return Ok(_repository.GetBackgroundId());
}
//Match PUT version/SetBackgroundId?id=5
[HttpPut("[action]")]
public IActionResult SetBackgroundId([FromQuery]int id) {
_repository.SetBackgroundId(id);
return NoContent();
}
}
还要注意路由令牌的使用,而不是新建响应,Controller
已经有了提供这些结果的辅助方法。