バインディングを完了するまでに30秒かかるWeb API 2アクションメソッドでパラメータとしてUserFilter
クラスが取得されました。私はすでにUserFilter
クラスを作成しているので、すべてのインスタンス化に時間がかかりませんでしたが、作成されたWeb APIがバックグラウンドで〜30秒を費やしていて、ついにアクションメソッドの実行を開始します。バインディングのモデリング
この同じプロジェクトでMVCコントローラにUserFilter
をセットアップしました。遅延なしですぐにバインドされます。この問題を抱えているのは単なるWeb APIです。
Web APIがバックグラウンドで何をしているのか把握するにはどうすればよいですか?
バインディングライフサイクルでラッチできるイベントはありますか?
[Route("all")]
[HttpPost]
public async Task<IHttpActionResult> GetUsers([FromBody]UserFilter filter)
{
// takes ~30 seconds before a breakpoint hits this next line
filter = UserFilter.InitializeFilter(filter);
var userList = await UserRepository.GetUsers(filter).ConfigureAwait(false);
return Ok(new JsonResponse(new { Users = userList, Pager = filter.Pager }));
}
public class UserFilter : BaseFilter<UserFilter, User>
{
// DO NOT REMOVE: default constructor needed for model binding
public UserFilter() : base() { }
public UserFilter(int? pageSize)
: base(pageSize)
{
}
...
}
public abstract class BaseFilter<TFilterType, TEntity>
{
// default constructor needed for model binding
public BaseFilter()
{
Pager = new Pager(null);
Init();
}
public BaseFilter(int? pageSize)
{
Pager = new Pager(pageSize);
Init();
}
...
}