2015-12-04 37 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使用它們,所以在發送之前你不需要改變參數... –

相關問題