Tengo un filtro de acción que cuando se usa en ciertas condiciones específicas tiene que realizar una llamada al servicio web para garantizar que el estado actual sea válido. Inicialmente, esto parecía un candidato ideal para asíncrono/esperan, pero me he encontrado con un obstáculo:Filtro de acción asíncrono en MVC 4
asumir una solicitud a:/Prueba/FilteredAction comienza
- MyCustomActionFilter ejecutar
- El primer "esperan" declaración se alcanza
- TestController.FilteredAction comienza a ejecutar
- MyCustomActionFilter reanuda la ejecución
Tradicionalmente, esperaría que el filtro de acción reanude la ejecución y luego se complete antes de que la acción del controlador comience a ejecutarse, pero esto no sucede.
Ahora supongo que esto se debe a que estoy usando:
public class MyCustomActionFilter : ActionFilterAttribute
{
public override **async** void OnActionExecuting(FilterContext context)
{
var foo = await WebServiceCall();
}
}
Así que creo que mi pregunta es: ¿Hay una clase de filtro de acción asíncrono conscientes integrado en MVC 4, o debo bloquear las llamadas aquí?
Ha intentado aplicar el método descrito en [el blog de a'vron] (http://ayende.com/blog/163170/building-async-unit-of-work-with-mvc-4)? – ITmeze
Recientemente he publicado [una biblioteca] (https://www.nuget.org/packages/Hydrogen.Extensions.Mvc5.Async) que agrega la compatibilidad adecuada para filtros asíncronos (basado en gran medida en el código de [ASP.NET MVC] Núcleo] (https://github.com/aspnet/Mvc)). La fuente también está disponible aquí: https://github.com/jdaigle/Hydrogen.Extensions.Mvc5. –