के बाहर Async आपरेशन asp.net MVC के प्रदर्शन करना मैं हर अनुरोध पर एक बादल डेटाबेस से उपयोगकर्ता लोड करने के लिए सक्षम होना चाहते हैं और है कि एक नियंत्रक asp.net MVC के उपयोग करने में अनुरोध पर उपलब्ध है। समस्या यह है कि वर्तमान ढांचा एक्शन फ़िल्टर से एसिंक ऑपरेशन करने का समर्थन नहीं करता है। तो OnActionExecuting, OnAuthorization तरीकों मुझे उदाहरण के लिए इस .. ऐसा करने की अनुमति नहीं है मैं निम्नलिखित कोड है जो काम नहीं करता है (इसलिए यह कोशिश मत करो) .. आप एक अपवाद प्राप्त है: "एक अतुल्यकालिक मॉड्यूल या हैंडलर जबकि एक अतुल्यकालिक पूरा ऑपरेशन अभी भी लंबित था। "कार्रवाई
protected async override void OnAuthorization(AuthorizationContext filterContext)
{
var user = filterContext.HttpContext.User;
if (!user.Identity.IsAuthenticated)
{
HandleUnauthorizedRequest(filterContext);
return;
}
using (var session = MvcApplication.DocumentStore.OpenAsyncSession())
{
User currentUser = await session.LoadAsync<User>(user.Identity.Name);
if (currentUser == null)
{
HandleUnauthorizedRequest(filterContext);
return;
}
filterContext.HttpContext.Items["User"] = currentUser;
}
}
तो क्या ऐसा करने में सक्षम होने का कोई अन्य तरीका है? मुझे लगता है कि बेस कंट्रोलर में एक प्रारंभ निष्पादन विधि है:
protected override IAsyncResult BeginExecute(RequestContext requestContext, AsyncCallback callback, object state)
{
return base.BeginExecute(requestContext, callback, state);
}
क्या मैं संभवतः वहां ऐसा कर सकता हूं?
आप [यहां एसिंक एक्शन फ़िल्टर के लिए वोट दे सकते हैं] (https://aspnet.codeplex.com/workitem/9582)। –
मैंने हाल ही में [एक लाइब्रेरी प्रकाशित की है] (https://www.nuget.org/packages/Hydrogen.Extensions.Mvc5.Async) जो एसिंक फ़िल्टर के लिए उचित समर्थन जोड़ता है (भारी रूप से कोड पर आधारित [एएसपी.नेट एमवीसी कोर] (https://github.com/aspnet/Mvc))। स्रोत यहां भी उपलब्ध है: https://github.com/jdaigle/Hydrogen.Extensions.Mvc5। –