Web API 2プロジェクトをASP.NET 5に移行しようとしています。しかし、もう存在しない要素がたくさんあります。
たとえば、IHttpActionResult
またはOk(), NotFound()
メソッド。またはRoutePrefix
[]
すべてのIHttpActionResult
をIActionResult
で変更する必要がありますか? Ok
()をnew ObjectResult
で変更しますか? (同じですか?)
Startup.csにもう存在しないHttpConfiguration
についてはどうですか?
IHttpActionResult
は実質的にIActionResult
になりました。戻りオブジェクトでOk
を返すには、return new ObjectResult(...);
を使用します
だから効果的にこのようなもの:
public IActionResult Get(int id)
{
if (id == 1) return HttpNotFound("not found!");
return new ObjectResult("value: " + id);
}
詳細が記載された優れた記事を次に示します。
http://www.asp.net/vnext/overview/aspnet-vnext/create-a-web-api-with-mvc-6
reply-ishを更新
誰かがコメントでWebApiCompatShim
を参照しているのを見ました。
WebApiCompatShim
はこの種の移植性シナリオのためにまだ維持されており、現在1.1.0でリリースされています。
_Microsoft.AspNetCore.OData 1.0.0-rtm-00011
_には依存関係としてWebApiCompatShim
があることがわかりました。この分野で彼らが何を達成しようとしているのか正確にはわかりません。これらは単なる事実です。
別の互換パッケージを取得することに興味がなく、リファクタリング作業をさらに検討している場合は、次のアプローチを見ることができます。 WebApiCompatShim-REST apiの設定方法MVC 6を使用
Ok()
を使用することもできますが、冗長にならないようにHttp Wordが削除されたため、OkObjectResult()
メソッドを使用することもできます。 HttpOkObjectResult
-> OkObjectResult
_[HttpPost]
public ObjectResult Post([FromBody]string value)
{
var item = new {Name= "test", id=1};
return new OkObjectResult(item);
}
[HttpPost]
public ObjectResult Post([FromBody]string value)
{
var item = new {Name= "test", id=1};
return Ok(item);
}
_
At 2.2, the asp.net core migration guide state to replace IHttpActionResult with ActionResult. This works for me:
[Produces("application/json")]
[HttpPost]
public ActionResult GetSomeTable([FromBody] GridState state)
{
return Ok(new
{
data = query.ToList(),
paging = new
{
Total = total,
Limit = state.limit,
page = state.page,
Returned = query.Count()
}
});
}