2017-10-09 82 views
0

我上傳圖片並使用與DownloadData Web客戶端來獲取字節數組,但現在我拋出一個異常:WebClient.DownloadData拋出以BOT框架異常

Exception: State size exceeded configured limit. 
[File of type 'text/plain'] 

我還沒有發現這樣的行爲之前與完全相同的圖像。什麼可能出錯?

private async Task SendPhoto_ActivityReceivedAsync(IDialogContext context, IAwaitable<object> result) 
    { 
     Activity activity = await result as Activity; 
     Activity activityReply = activity.CreateReply(); 

     if (0 < activity.Attachments?.Count) 
     { 
      if (activity.Attachments.FirstOrDefault().ContentType.Equals("image/jpg") || 
       activity.Attachments.FirstOrDefault().ContentType.Equals("image/jpeg") || 
       activity.Attachments.FirstOrDefault().ContentType.Equals("image/png") || 
       activity.Attachments.FirstOrDefault().ContentType.Equals("image/tiff")) 
      { 
       picImage = activity.Attachments.FirstOrDefault().Name; 

       HttpClient httpClient= new HttpClient(); 
       picImageFile = await httpClient.GetByteArrayAsync(activity.Attachments.FirstOrDefault().ContentUrl); 

       await context.PostAsync("Want to send another?"); 

       context.Wait(SendAnotherImage_ActivityReceivedAsync); 
      } 
     } 
    } 

UPDATE:改變了Web客戶端來HttpClient.GetByteArrayAsync和問題依然存在。 在執行PostAsync之後,Bot仿真器中出現異常

+0

看看https://stackoverflow.com/questions/46527098/botframework-state-size-exceeded-configured-limit – GrandMasterFlush

+0

你需要附上完整的堆棧跟蹤。我懷疑DownloadData會拋出這個異常。它應該是一些Bot框架代碼,例如PostAsync。 – Evk

+0

順便說一句,你可以用'activity.Attachments?.Any()'替換'0 aloisdg

回答

0

問題在於picImageFile是對話框內的變量,因此對話框已被序列化,所以它被保存在狀態中。兩個選項

  1. 下載該方法中的圖像並對其進行處理,而不保存在存儲器
  2. 保存在字節數組中的外部存儲。
+0

感謝您的解決方案! – nmrlqa4