消息[无效值]位置[-]原因[无效]域[全局]

本文关键字:无效 全局 原因 位置 消息 | 更新日期: 2023-09-27 17:57:31

我已经使用Google自定义搜索API好几年了。此代码适用于Google nuget软件包"Google.Apis.Customsearch.v1客户端库"(v19.0.460)。

这是我的c#代码:

public Search SearchNow(string query)
{
    CustomsearchService service = new CustomsearchService(
        new BaseClientService.Initializer()
        {
            ApiKey = Properties.Resources.Google_Key,
            ApplicationName = "my-app-name"
        });
    CseResource.ListRequest req = service.Cse.List(query);
    req.Cx = Properties.Resources.Google_CX;
    req.Start = 1;
    return req.Execute();
}

这段代码在我的服务器上运行了一年多,没有任何问题。从上周开始,我开始恢复这个例外:

服务customsearch引发了异常:Google.Apis.Requests.RequestError无效

值[400]错误

[消息[无效值]位置[-]原因[无效]域[全局]]

位于中的Google.Apis.Requests.ClientServiceRequest`1.Execute()c: ''code''google.com''google api dotnet client''default''Tools''google.Apis.Release ''bin''Debug''test''default''Src''GoogleApis''Apis''Requests''ClientServiceRequest.cs:line96位于###.cs:line中的###.SearchNow(字符串查询,Int64 startResult)144在****''Tests''Program.cs:line 67 中的Tests.Program.Main()

我不知道是什么改变了''为什么这个停止工作。

我做了一个小测试——向谷歌发送"你好世界"搜索查询——这是第一次。我运行了这个测试agian和agian,发现这个代码在70%的情况下运行良好,其他时候它失败了(上面提到的错误)。

我已经双重验证了这些参数:ApiKey,ApplicationName,CX.

那么,问题出在哪里呢?

消息[无效值]位置[-]原因[无效]域[全局]

问题似乎与有关

req.Start = 1;

从我的代码中删除它为我修复了这个问题。

如果在查询CSE JSON API时将start参数设置为大于100的数字,则可能会发生此错误。结果数限制为最多100个结果。

来自Google CSE文档:

start:要返回的第一个结果的索引。每页的默认结果数是10,因此&start=11将从结果的第二页的顶部开始。注意:JSON API返回的结果永远不会超过100个,即使超过100个文档与查询匹配,因此将start+num之和设置为大于100的数字将产生错误。还要注意,num的最大值为10。

https://developers.google.com/custom-search/v1/cse/list

解决方案:将开始参数始终设置为数字<=100.

这可能也有帮助。。。。我得到了这个错误:

Google.GoogleApiException:'Google.Apis.Requests.RequestError无效资源id值。[400]错误[Message[资源id值无效。]位置[-]原因[无效]域[全局]

原因是将EventID设置为长度小于5的字符串。
固定在类中:

sEventID = value.PadLeft(5, '0');

Event.id参考