私はこのようなコントローラのアクションがあります。ASP.NETコア「CreatedAtRoute」障害
[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:Noルートは、供給された値と一致しません。
例外により、サービスは500のステータスコードを返すことになります。
どちらの場合も同じルートなので、最初の例が正しく動作し、2番目の例が正しく動作しない理由はわかりません。参照便宜上
"frameworks": {
"dnx46": { },
"dnxcore50": { }
},
、という名前のルートが2枚から構成されています
私project.json
が、これは含まれています。まず、コントローラの接頭辞である:
[Route("api/[controller]")]
public class SubscribersController : Controller
{
// ...
}
第二には、実際の"SubscriberLink"
ルートの名前がGETアクション、次のとおりです。
[HttpGet("{id}", Name = "SubscriberLink")]
[SwaggerResponse(HttpStatusCode.OK, Type = typeof(Subscriber))]
public async Task<IActionResult> GetSubscriber(Guid id)
{
//...implementation removed...
return Ok(subscriber);
}
思考?
の3番目の引数に
null
を渡すことができます。「SubscriberLink」ルート名はどこに定義されていますか? – haim770@ haim770最後のコードスニペットで定義されています。 –
'var link = Url.Link(" SubscriberLink "、new {id = subscriber.ID});'正しいURLを返すか、例外をスローしないだけですか? – haim770