Google BatchRequest错误400 invalidArgument

时间:2018-10-29 11:46:19

标签: c# google-tag-manager google-api-client

我正在使用Google的BatchRequest来限制我正在进行的api调用的数量。
这是功能性的,并将所有触发器添加到google TagManager帐户。

除了当我排队> = 6时触发BatchRequest。我收到的唯一错误是:error 400 invalid argument。这是一个非常模糊的错误,可能有很多含义。除此之外,它什么也不会给我。(我已经检查了错误处理程序)

 在回调中,content(应为Trigger)将为null。结果,我显然会收到错误Object reference not set to an instance of an object

它将前5个触发器添加到该帐户,但其余的将失败。

我100%确信参数正确,因为当我分别触发所有这些请求时,我可以使用完全相同的触发器。所有这些都将添加到TagManager帐户中。

我尝试过的事情:

  • 在队列的第6个位置上使用不同的触发器。 (这没有什么区别,并且仍然会崩溃。无论如何,BatchRequest都将以未知顺序触发这些请求,所以没关系。)
  • BatchRequest中仅排队5个触发器(此方法有效,但我需要更多:()
  • 我已经检查了要在foreach循环中作为单独请求排队的每个触发器(这也可行。)

下面的代码显示了我如何设置BatchRequest

//Create BatchRequest
var tagmanagerRequest = new BatchRequest(_tagManagerService);

            //Queue all create trigger requests.
            foreach (var keyValue in triggerDictionary)
            {
                tagmanagerRequest.Queue<Trigger>(_tagManagerService.Accounts.Containers.Workspaces.Triggers.Create(
                        keyValue.Value, $"accounts/{_tagManagerAccount.AccountId}/containers/{_analyticsTagDatas[portalId].GtmContainerId}/workspaces/{_analyticsTagDatas[portalId].GtmWorkspaceId}"),
                    (content, error, index, message) =>
                    {
                        //callback
                        //Get response and save generated TriggerId
                        keyValue.Key.GoogleTriggerId = content.TriggerId;
                    }); 
            }

await tagmanagerRequest.ExecuteAsync().ConfigureAwait(false);

非常感谢您的帮助,因为我已经为这个问题苦苦挣扎了好几天。而且我真的很想使用这些BatchRequests而不是单独的请求来提高效率。

0 个答案:

没有答案