Внутри моего приложения ASP.NET Core у меня есть действие контроллера следующим образом:
[HttpPost]
public async Task<IActionResult> CreateSubscriber([FromBody] SubscriberDef subscriber)
{
//...implementation removed
var link = Url.Link("SubscriberLink", new { id = subscriber.ID });
return Created(link, null);
}
Вышеприведенный код работает так, как ожидалось. Однако, если я использую встроенный метод "CreatedAtRoute", то получаю исключение:
[HttpPost]
public async Task<IActionResult> CreateSubscriber([FromBody] SubscriberDef subscriber)
{
//...implementation removed
return CreatedAtRoute("SubscriberLink", new { id = subscriber.ID });
}
Исключение составляет:
System.InvalidOperationException: маршрут не соответствует указанным значениям.
Исключение приводит к тому, что служба возвращает код состояния 500.
Это один и тот же маршрут в любом случае, поэтому я не знаю, почему первый пример работает правильно, а второй - нет.
My project.json
содержит следующее:
"frameworks": {
"dnx46": { },
"dnxcore50": { }
},
Для справки, названный маршрут состоит из двух частей. Первый - это префикс контроллера:
[Route("api/[controller]")]
public class SubscribersController : Controller
{
// ...
}
Во-вторых, это действие GET, где фактический маршрут "SubscriberLink"
назван:
[HttpGet("{id}", Name = "SubscriberLink")]
[SwaggerResponse(HttpStatusCode.OK, Type = typeof(Subscriber))]
public async Task<IActionResult> GetSubscriber(Guid id)
{
//...implementation removed...
return Ok(subscriber);
}
Мысли?