2015-12-04 23 views
0

我有我在C#中的以下代码,但在Fiddler2上没有看到任何内容?我在这里和总体上看过很多问题,尽管似乎有不同的方式。我需要我的MVC控制器在向Google Analytics发起跟踪后将用户重定向到第三方页面。从C#中剔除Google Analytics不起作用

C#代码

var rnd = new Random(); 
var statsRequest = string.Format("http://www.google-analytics.com/__utm.gif?utmwv=4.6.5&utmn={0}&utmcs=-&utmsc=-&utmul={1}&utmje=-&utmfl=-&utmdt=&utmhid=&utmr=0&utmp=&utmac={2}&utmcc=__utma%3D", 
    rnd.Next(100000000, 999999999), 
    languageCode, 
    accountId); 

using (var client = new WebClient()) 
{ 
    client.DownloadData(statsRequest); 
} 

任何人都可以请帮助?如果我在单元测试中运行此代码,它将起作用(即,我在Fiddler2中看到statsRequest),但当我点击网页时无法运行。有什么我做错了吗?

上面的代码被包裹在该控制器操作调用

C#MVC控制器

public class MyController ... 
{ 
    public ActionResult Test() 
    { 
     SendGoogleTrackingCode(); 
     Response.Redirect(externalUrl); 
    } 
} 

非常感谢的方法,

回答

0

也许运行代码不等待GA请求在重定向之前发送它。 尝试添加一些异常处理程序来检查提出的问题类型。

但是,您的GA数据有点过时。

GA命中数据应该使用Measurement Protocol构建。在官方文档 到这里看看: https://developers.google.com/analytics/devguides/collection/protocol/v1/devguide

您可以尝试建立一个自定义的命中使用在命中生成器: https://ga-dev-tools.appspot.com/hit-builder/

你也可以检查是否命中使用他们的调试params为有效: https://developers.google.com/analytics/devguides/collection/protocol/v1/validating-hits

除此之外,为了从C#中引用它,还有一些方法。首先,拿这个例子来看看:

using (var wb = new WebClient()) 
{ 
    var data = new NameValueCollection(); 
    data["v"] = "1"; 
    data["tid"] = "UA-XXXXXXXX-1"; 
    data["cid"] = Guid.NewGuid().ToString(); 
    data["t"] = "event"; 
    data["ec"] = "myCategory"; 
    data["ea"] = "myAction"; 
    var url = @"https://ssl.google-analytics.com/collect"; 
    var response = wb.UploadValues(url, data); 
    var stringResponse = System.Text.Encoding.UTF8.GetString(response); 
} 

而且,我发现一个有用的包装在这样做的: https://gist.github.com/0liver/11229128

我希望它能帮助!

+0

感谢这,如果namevaluecollection中的参数对应于我猜测的查询字符串参数?即我需要改变v,tid,cid,t等等等等。到utmsc,utmul等等。谢谢! – Jamie

+0

另外,我实际上在调试中运行代码,所以我在下面的DownloadData(webRequest)行上持有代码,所以我不认为这是一个没有等待的问题..(?) – Jamie

+0

Jamie,v, tid,cid,t实际上是官方参数:) Measurement Protocol使用它们,所以在发送之前你不需要改变参数... –

相关问题