53

मैं एक आंशिक दृश्य async का उपयोग कर डेटाबेस से IEnumerable<Post> पुनः प्राप्त करने की कोशिश करता है ...Async PartialView का कारण बनता है "HttpServerUtility.Execute अवरुद्ध ..." अपवाद

विधि है

public static class PostService 
{ 
    public static int PostsPerPage = 50; 

    public static async Task<IEnumerable<Post>> GetRecentAsync(int page = 0) 
    { 
     return await entityFrameworkDbContext.Posts 
      .ToListAsync(); 
    } 
} 

PartialView

public async Task<ActionResult> Recent(int page = 0) 
{ 
    return PartialView(await PostService.GetRecentAsync(page)); 
} 

और फिर अगर मैं इसे

@Html.Action("Recent", "Post") 
कॉल करने के लिए कोशिश

मैं निम्न अपवाद

HttpServerUtility.Execute जबकि पूरा करने के लिए एक अतुल्यकालिक ऑपरेशन के लिए इंतजार कर रहे अवरुद्ध मिलता है।

विवरण: वर्तमान वेब अनुरोध के निष्पादन के दौरान एक अनचाहे अपवाद हुआ। त्रुटि के बारे में अधिक जानकारी के लिए और जहां यह कोड में उत्पन्न हुआ, कृपया स्टैक ट्रेस की समीक्षा करें।

अपवाद विवरण: सिस्टम। अविश्वसनीय अपवाद: HttpServerUtility.Anynchronous ऑपरेशन को पूरा करने के लिए प्रतीक्षा करते समय अवरुद्ध करें।

मुझे यह त्रुटि क्यों मिलती है? क्या यह काम नहीं करना चाहिए?

उत्तर

69

बाल क्रियाओं को समकालिक रूप से लागू किया जाना चाहिए। Issue 601 मुझे इस कार्यक्षमता की अनुमति देने वाले मौजूदा एमवीसी पुस्तकालयों के किसी भी हालिया अपडेट से अवगत नहीं है।

अंक 601 पर एक टिप्पणी, इस कार्यक्षमता पर संकेत एमवीसी vNext, उर्फ ​​में जोड़ा जा रहा है। MVC6। बाल क्रियाओं को ViewComponent के साथ प्रतिस्थापित किया जाना चाहिए जिसे नीचे दिए गए दृश्य से अतुल्यकालिक रूप से बुलाया जा सकता है। पूर्ण उदाहरण here और here

<div> 
@await Component.InvokeAsync("YourComponent") 
</div> 

MVC6 पर और देखें के लिए, http://www.asp.net/vnext/overview/aspnet-vnext/overview

नोट: यह जवाब सिर्फ एक औपचारिकता है, इसलिए प्रश्न के रूप में दिए

चिह्नित किया जा सकता
संबंधित मुद्दे