使用网络聊天上传附件的例外

时间:2017-03-28 16:58:39

标签: c# botframework

使用网络聊天频道时,我们在向Bot上传附件时遇到问题。 上传附件后,我们收到“抱歉,我的机器人代码出现问题”,在我们的日志中,我们看到以下异常:

发布收到的异常:远程服务器返回错误:(400)错误请求。 Microsoft.Rest.HttpOperationException:远程服务器返回错误:(400)错误请求。    在Microsoft.Bot.Connector.ErrorHandling.d__2`1.MoveNext() ---从抛出异常的先前位置开始的堆栈跟踪结束---    在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)......

这是我们用于获取附件内容的代码:

    private async Task StoreUserAttachments(IDialogContext context, IAwaitable<IEnumerable<Attachment>> attachments)
    {
        try
        {
            m_userAttachments = new List<UserAttachment>();
            var httpClient = new HttpClient();

            foreach (var attachment in await attachments)
            {
                PrivateTracer.Tracer.TraceInformation($"Got user attahcment with content type {attachment.ContentType} and name {attachment.Name}");
                var attachmentBytes = await httpClient.GetByteArrayAsync(attachment.ContentUrl);
                m_userAttachments.Add(new UserAttachment {Filename = attachment.Name, ContentsBase64 = Convert.ToBase64String(attachmentBytes)});
            }
            await PromptNextQuestion(context);
        }
        catch (Exception exception)
        {
            var message = $"Got exception {exception}";
            PrivateTracer.Tracer.TraceError(message);
            context.Done(message);
        }
    }

以下是调用此函数的代码

PromptDialog.Attachment(context, StoreUserAttachments, "Please upload your files now."); 

这个try-catch没有捕获异常,它只是从网络聊天中抛出而不是在Bot模拟器中抛出,这使得调试变得更加困难。

任何想法是什么造成的?

编辑

我们缩小了问题范围:

  1. 只有在我们将附件保存到字段时才会发生错误请求异常(m_userAttachments)

  2. 当我们将附件传递给下一个方法而不是将它们保存在字段中时,我们得到以下异常:

    发布收到的异常:响应状态代码不表示成功:500(内部服务器错误)。 System.Net.Http.HttpRequestException:响应状态代码不表示成功:500(内部服务器错误)。 在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务) 在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSucces ...

0 个答案:

没有答案