Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Azure关键字短语API有时返回400_C#_Azure_Microsoft Cognitive_Azure Cognitive Services_Text Analytics Api - Fatal编程技术网

C# Azure关键字短语API有时返回400

C# Azure关键字短语API有时返回400,c#,azure,microsoft-cognitive,azure-cognitive-services,text-analytics-api,C#,Azure,Microsoft Cognitive,Azure Cognitive Services,Text Analytics Api,我得到的Azure关键词API的结果好坏参半——有时是成功的(我指的是200个结果),有时是400个错误请求。为了测试该服务,我将从他们的NoSQL服务上的Azure PDF发送内容 文档中说,每个文档最多可以包含5k个字符。为了排除这种可能性,(我从5k开始)我将每个限制为最多1k个字符 我如何才能获得有关故障原因的更多信息?我已经检查了门户,但是没有太多细节 我正在使用此端点: 一些示例失败: {“文档”:[{“语言”:“en”,“id”:1,“文本”:“David Chappell了解M

我得到的Azure关键词API的结果好坏参半——有时是成功的(我指的是200个结果),有时是400个错误请求。为了测试该服务,我将从他们的NoSQL服务上的Azure PDF发送内容

文档中说,每个文档最多可以包含5k个字符。为了排除这种可能性,(我从5k开始)我将每个限制为最多1k个字符

我如何才能获得有关故障原因的更多信息?我已经检查了门户,但是没有太多细节

我正在使用此端点:

一些示例失败:

  • {“文档”:[{“语言”:“en”,“id”:1,“文本”:“David Chappell了解Microsoft Azure上的NoSQL,由Microsoft Corporation赞助版权所有©2014 Chappell&Associates”}]}

  • {“文档”:[{“语言”:“en”,“id”:1,“text”:“3几十年来,关系技术一直是处理数据的主要方法。通常使用结构化查询语言(SQL)访问,关系数据库非常有用。正如它们的流行所表明的那样,它们可以应用于许多不同的情况。但关系技术并不总是最好的方法。假设您需要处理大量数据,例如,太多数据无法存储在一台机器上。扩展关系技术以有效地工作跨许多服务器(物理或虚拟)可能是一个挑战。或者假设您的应用程序使用的数据不适合关系系统,例如JavaScript对象表示法(JSON)文档。将数据硬塞进关系表是可能的,但专门设计用于处理此类信息的存储技术可能更简单。NoSQL技术是为了解决此类问题而创建的。顾名思义,标签包含各种存储“}]}

**添加了我的快速/肮脏poc代码***

List<string> sendRequest(object data)
    {
        string url = "https://eastus.api.cognitive.microsoft.com/text/analytics/v2.0/keyPhrases";
        string key = "api-code-here";
        string hdr = "Ocp-Apim-Subscription-Key";
        var wc = new WebClient();
        wc.Headers.Add(hdr, key);
        wc.Headers.Add(HttpRequestHeader.ContentType, "application/json");

        TextAnalyticsResult results = null;

        string json = JsonConvert.SerializeObject(data);
        try
        {
            var bytes = Encoding.Default.GetBytes(json);
            var d2 = wc.UploadData(url, bytes);
            var dataString = Encoding.Default.GetString(d2);
            results = JsonConvert.DeserializeObject<TextAnalyticsResult>(dataString);                
        }
        catch (Exception ex)
        {
            var s = ex.Message;
        }
        System.Threading.Thread.Sleep(125);

        if (results != null && results.documents != null)
            return results.documents.SelectMany(x => x.keyPhrases).ToList();
        else
            return new List<string>();
    }
试着换一行

var bytes = Encoding.Default.GetBytes(json);

试着换一行

var bytes = Encoding.Default.GetBytes(json);


我使用您指出有错误的文档示例手动创建了一些请求,服务正确地处理了这些请求并返回了关键短语。因此,可能会出现编码问题

将来,您还可以查看服务返回的内部错误。通常,您会在下面的响应示例中看到更多细节

{
  "code": "BadRequest",
  "message": "Invalid request",
  "innerError": {
    "code": "InvalidRequestContent",
    "message": "Request contains duplicated Ids. Make sure each document has a unique Id."
  }
}
此外,还有一个用于文本分析的.NET SDK,可以帮助简化服务调用。

我使用您指出有错误的文档示例手动创建了一些请求,服务正确地处理了这些请求并返回了关键短语。因此,可能会出现编码问题

将来,您还可以查看服务返回的内部错误。通常,您会在下面的响应示例中看到更多细节

{
  "code": "BadRequest",
  "message": "Invalid request",
  "innerError": {
    "code": "InvalidRequestContent",
    "message": "Request contains duplicated Ids. Make sure each document has a unique Id."
  }
}
此外,还有一个用于文本分析的.NET SDK,可以帮助简化服务调用。

请显示您向客户发出请求的代码API@MariaInesParnisari更新代码样本请显示您向客户发出请求的代码API@MariaInesParnisari更新了代码示例,这一更改有所帮助。我正在处理的PDF有15个段落——如果我在所有1个请求中发送它们,作为15个文档,每个文档的字符数不到5k,它将再次返回400个段落。但是,如果我作为15个单独的请求(1个文档/请求)发送,每个请求都会得到处理。显然,我的id值存在问题:是这样添加的:id=data.documents.Count()+1。当更改为id=rnd.Next(11000)+data.documents.Count()+1时,批提交工作正常。我只是在一个列表中循环发送它们,没有并发处理。这种改变很有帮助。我正在处理的PDF有15个段落——如果我在所有1个请求中发送它们,作为15个文档,每个文档的字符数不到5k,它将再次返回400个段落。但是,如果我作为15个单独的请求(1个文档/请求)发送,每个请求都会得到处理。显然,我的id值存在问题:是这样添加的:id=data.documents.Count()+1。当更改为id=rnd.Next(11000)+data.documents.Count()+1时,批提交工作正常。我只是在一个列表中循环发送它们,没有并发处理;StatusDescription只是“坏请求”。我很想得到错误描述,这样我就可以在我这边修复它。正如在另一篇文章中提到的——如果我单独提交,没有问题——只有当它是一批多个文档时。我验证了我对每个document.FYI都有唯一的ID-抛出异常:var d2=wc.UploadData(url,字节);我建议您在这里使用CognitiveServices控制台确认您的多文档json请求负载是有效的:我在WebException对象中没有看到该信息;StatusDescription只是“坏请求”。我很想得到错误描述,这样我就可以在我这边修复它。正如在另一篇文章中提到的——如果我单独提交,没有问题——只有当它是一批多个文档时。我验证了我对每个document.FYI都有唯一的ID-抛出异常:var d2=wc.UploadData(url,字节);我建议您使用CognitiveServices控制台确认您的多文档json请求负载有效: