2015-11-22 72 views
1

我得打開一個彈出窗口,它將顯示Customers的列表。我爲所有CRUD操作使用DreamFactory。但DreamFactory已經得到了所有操作async操作和同時加載局部視圖提示錯誤:Dreamfactory - MVC PartialView問題

HttpServerUtility.Execute blocked while waiting for an asynchronous operation to complete.

我用下面的代碼加載的局部視圖 -

@Html.Action("GetAddressListForPartial", "Customer", new { CustomerID = Model.CustomerID }) 

這是我的控制器方法

public async Task ActionResult CustomerList() 
{ 
    Models.Customers oCustomers = await new DataAccessLayer.DataAccess().GetCustomerList(databaseApi); 
    return View("CustomerList", oCustomers); 
} 

請讓我知道是否有任何解決方法來處理這種情況。

謝謝

回答

3

您的問題不僅僅與DreamFactory有關。使用ASP.Net MVC 5及更早版本,當您的操作方法使用async時,無法執行子操作。 子動作必須同步運行。如果你想要你的代碼工作,你必須刪除async關鍵作品,因此刪除Task。在結束時,你必須有這樣的:

public ActionResult CustomerList() 
{ 
    Models.Customers oCustomers = new DataAccessLayer.DataAccess().GetCustomerList(databaseApi).Result; 
    return View("CustomerList", oCustomers); 
} 

與ASP.Net MVC 6,ViewComponent將允許異步執行子操作。

+0

是的,我在其他帖子中發現了這個解決方案,但問題是我不能使用MVC6 6,我的客戶想讓我使用DreamFactory。 DreamFactory只提供asych操作。我們是否有任何解決方法來解決這種情況? – Brijesh

+1

在我的答案我強制你的DreamFactory方法通過使用不會阻塞主線程的Task.Run同步執行。使用ASP.Net MVC 5你只能這樣做。向你的客戶清楚簡單地解釋它,他會接受或轉移到ASP.Net MVC 6 :)。 – CodeNotFound

+0

如果我使用你給出的解決方案然後它會引發另一個錯誤:參數1不能從System.Threading.Tasks.Task轉換到syste.action – Brijesh