发布长内容会引发“抱歉,我的机器人代码有问题”

时间:2018-07-19 12:54:59

标签: c# string image base64 botframework

我正在使用BotFramework在PNG图像上绘制字符串。然后,我将其从内存中的字节数组转换为base64字符串。我将base64字符串发布到服务并获得正确的响应。一切正常,但是在此过程之后,我收到“对不起,我的机器人代码有问题”消息。

case 5:
{
    try
    {
        ...
        graphics.DrawString(text, fonti, brush, drawRect, stringFormat);

        using (MemoryStream m = new MemoryStream())
        {
            image.Save(m, image.RawFormat);
            // I've tried changing this line to String or StringBuilder but
            // nothing changed              
            IMAGE = $"data:image/png;base64,{Convert.ToBase64String(m.ToArray())}"; 

            m.Close();
        }
    }
    catch { await context.PostAsync("ERR1"); }

    string json = null;
    try
    {
        string FormStuff = string.Format($"somecontent");
        StringContent content = new StringContent(
                                      FormStuff,
                                      Encoding.UTF8,
                                      "application/x-www-form-urlencoded");

        string url = string.Format("http://www.example.com/");
        var response = await client.PostAsync(url, content);
        json = (await response.Content.ReadAsStringAsync()).ToString();
    }
    catch { await context.PostAsync("ERR2"); }
    ...
}

break;

IMAGE变量是一个字符串。

每当我删除或更改 Convert.ToBase64String()时,问题就消失了,但是我无法根据需要使用该服务,并且过程中断了。

这里唯一的问题是引发并显示给最终用户的异常。

  

抱歉,我的机器人代码有问题

编辑:我发现,如果我的帖子请求中的内容太长,则会收到错误消息。我尝试使用FormUrlEncodedContent,但是它抛出了这个问题:

  

无效的URI:Uri字符串太长。

如何以其他方式发布?

1 个答案:

答案 0 :(得分:0)

我不知道您正在调用什么服务,或者没有用于测试的参数的所有值。但这对于评论来说太长了。

尝试此操作,而不要Public Sub SeleniumImplementation() Dim driver As New Selenium.WebDriver ' in older versions was SeleniumWrapper.WebDriver 'Late binding would be: 'Dim driver As Object 'Set driver = CreateObject("Selenium.WebDriver") driver.start "chrome", "http://news.yahoo.com" driver.open "/politics" driver.stop End Sub 尝试类似的操作

.ToArray()

您可能还想将此设置设置为与 var image = Convert.ToBase64String(File.ReadAllBytes("FileName")); 一起形成的字符串之外的变量。过去我曾经成功过类似的事情,但我又一次不知道您的服务在做什么或期望什么。

IMAGE