web-dev-qa-db-ja.com

ASP.NET CoreのIHttpActionResultおよびヘルパーメソッド

Web API 2プロジェクトをASP.NET 5に移行しようとしています。しかし、もう存在しない要素がたくさんあります。

たとえば、IHttpActionResultまたはOk(), NotFound()メソッド。またはRoutePrefix []

すべてのIHttpActionResultIActionResultで変更する必要がありますか? Ok()をnew ObjectResultで変更しますか? (同じですか?)

Startup.csにもう存在しないHttpConfigurationについてはどうですか?

37
Tim

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

64
Sean

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);
}
_
5
Razvan Dumitru
 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()
                    }
                });
}