2016-09-06 42 views
1

我正在從HTML助手進行簡單的webclient異步調用。爲什麼我在運行此代碼時遇到此異常。來自HTML助手的異步調用

using (var webClient = new WebClient())    { 
    webClient.DownloadStringCompleted += new DownloadStringCompletedEventHandler(wc_DownloadStringCompleted); 
    webClient.Headers["Content-Type"] = "application/json"; 
    webClient.Encoding = Encoding.UTF8; 
    string orderString = JsonConvert.SerializeObject(orders); 
    string result = webClient.UploadStringAsync(createOrderURI, orderString); 

例外

System.InvalidOperationException異步操作不能 開始在這個時候。異步操作只能在異步處理程序或模塊內或期間 頁面生命週期的某些事件開始

我不想進入,因爲我用一把umbraco teacommerce訂單移動控制器的異步等。這個調用是在創建訂單時用於外部API。

回答

1

根據「Async method call in Razor view」,ASP.NET MVC中不支持async methoc調用,但在ASP.NET Core MVC中支持。

因此,在您的情況下,在視圖本身或HTML助手中調用同一個上下文中的異步調用是不可能的。 Razor引擎捕獲這些嘗試並拋出引用的異常。

爲了遵循MVC模式,我建議重新評估將這個邏輯放入控制器中的異步操作方法,並將數據放入視圖模型中。

+0

謝謝。對,你得咬一口子彈。爲了看看我可以做什麼,將不得不點擊控制教學電子商務。 – Pacchy