0

我们使用如下代码从服务器发送购买事件:

using (var httpClient = new RestClient())
            {
                httpClient.SendAsync(new HttpRequestMessage
                {
                    RequestUri = new Uri(url),
                    Method = HttpMethod.Get
                });
           }

但是大约 15-20% 的事件从未在 GA 中注册。Google 似乎总是以 GIF 和状态码 200 进行响应,因此很难判断哪些事件未成功处理。

一开始我们使用 javascript API 发送事件,但是当我们切换到服务器端时,我们复制了它正在创建的请求并尝试使用 HttpClient 复制它。

请求发送如下所示:

https://www.google-analytics.com/collect?v=1&_v=j47&a=817546713&t=event&ni=0&_s=1& dl=#scheme + 主机 + pathAndQuery#&dp=#path#&dt=#path#&ul=#browser语言#&de=#browser encoding#&sd=#bit#&sr=#screen resolution#&vp=#viewable browser area#&cid=#Id取自_ga cookie#&je=0&fl=24.0%20r0&ec=Ecommerce&ea=purchase &_u=SCEAAAALI20 %25~&jid=&tid=#TrackingId#>m=#TagManagerId#&ti=#OrderId#&ta=& tr=#TotalPrice#&tt=#TotalTax#&ts=#ShippingPrice#&tcc=#VoucherCode# &pa=purchase&cu=#CurrencyCode# &pr1nm=#ProducteName#&pr1id=#ProductId#&pr1pr=#ProductPrice#&pr1br=#Brand#&pr1ca=&pr1va=#Variant#&pr1qt=#Quantity#&z=#随机生成的唯一ID#

欢迎任何关于错误或如何调试的想法

4

1 回答 1

0

你不应该在后端这样做。正确的方法是在前端做到这一点

最简单且正确的方法是将数据发送到您的 dataLayer,然后在 GTM 中将事件发送到 GA。

PS 在您的 C# 代码中,我可以看到您没有等待异步方法的问题。如果您的方法不是异步的,那么您可以像这样使用它:

var temp = httpClient.SendAsync(new HttpRequestMessage
            {
                RequestUri = new Uri(url),
                Method = HttpMethod.Get
            }).Result; 
于 2017-10-23T08:24:59.060 回答