53

"... HttpServerUtility.Execute engellenmiş" nedenAsync PartialView Ben uyumsuz kullanarak veritabanından bir <code>IEnumerable<Post></code> almaya çalışır kısmi bir görünüm ...</p> <p>Yöntem sahip istisna

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)); 
} 

Ve sonra da

@Html.Action("Recent", "Post") 
aramayı deneyin eğer

ben tamamlamak için zaman uyumsuz bir işlem için beklerken bloke aşağıdaki istisna

HttpServerUtility.Execute olsun.

Açıklama: Geçerli web isteğinin yürütülmesi sırasında işlenmeyen bir özel durum oluştu. Hata hakkında ve kodda nereden kaynaklandığı hakkında daha fazla bilgi için yığın izlemesini gözden geçirin.

Özel Durum Ayrıntıları: System.InvalidOperationException: Senkronize olmayan bir işlemin tamamlanmasını beklerken HttpServerUtility.Execute engellenir.

Neden bu hatayı alıyorum? Çalışmamalı mı?

cevap

69

Çocuk eylemleri eşzamanlı olarak çağrılmalıdır. Issue 601 Ayrıca, bu işlevselliğe izin veren mevcut MVC kütüphaneleriyle ilgili son güncellemelerin farkında değilim.

Sorun 601'e yapılan bir yorum, bu işlevsellikle MVC vNext, aka. MVC6. Çocuk eylemleri, aşağıdaki gibi bir görünümden eşzamansız olarak çağrılabilen ViewComponent ile değiştirilmeyi arar. Tam örnekler here ve check out MVC6 hakkında daha fazlası için here

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

, http://www.asp.net/vnext/overview/aspnet-vnext/overview

Not: Bu cevap sadece formalite, yani

cevap olarak soru işaretlenebilir