Ich habe eine UserFilter
Klasse als Parameter auf einer Web API 2 Aktion Methode, die ~ 30 Sekunden dauert, um die Bindung abzuschließen. Ich bin bereits in die Klasse UserFilter
eingetreten, da sie erstellt wird und es keine Zeit in Anspruch nimmt, aber sobald die erstellte Web-API etwas im Hintergrund für die ~ 30 Sekunden erledigt und schließlich meine Aktionsmethode ausführt.Modellierung Bindung dauert für immer
Ich habe die UserFilter
auf einem MVC-Controller in diesem Projekt eingerichtet und es sofort ohne Verzögerungen binden. Es ist nur Web-API, die dieses Problem hat.
Was kann ich tun, um herauszufinden, was Web API im Hintergrund macht?
Gibt es ein Ereignis, auf das ich im Bindungslebenszyklus zugreifen kann?
[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();
}
...
}