【发布时间】:2017-10-09 11:51:28
【问题描述】:
我正在上传一张图片并使用 WebClient 和 DownloadData 来获取字节数组,但现在它抛出了一个异常:
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);
}
}
}
更新: 将 WebClient 更改为 HttpClient.GetByteArrayAsync 问题仍然存在。 PostAsync 执行后,Bot Emulator 中立即显示异常
【问题讨论】:
-
您需要附加完整的堆栈跟踪。我怀疑那是 DownloadData 抛出这个异常。它应该是一些 Bot Framework 代码,例如 PostAsync。
-
顺便说一句,您可以将
0 < activity.Attachments?.Count替换为activity.Attachments?.Any()。为什么使用 webclient 而不是 httpclient? -
是的,它实际上是在 PostAsync 之后发生的。 DownloadData 本身不会引发异常,但注意到当我删除该行时一切都很好。 (但我没有其他方法来获取 byte[] 所以它实际上并不好)
标签: c# .net exception webclient botframework