C# Bitly跟踪点击的方法是什么

C# Bitly跟踪点击的方法是什么,c#,jquery,asp.net,asp.net-mvc,bitly,C#,Jquery,Asp.net,Asp.net Mvc,Bitly,我正在尝试实现一个代码,检测Bitly链接,并基于该移动设备(Android、IOS、网站)跟踪用户。例如,我想知道点击Bitly链接的Android用户、苹果用户和网站用户的数量,这是我的代码 <script type="text/javascript"> getMobileOperatingSystem(); function getMobileOperatingSystem() { var userAgent = naviga

我正在尝试实现一个代码,检测Bitly链接,并基于该移动设备(Android、IOS、网站)跟踪用户。例如,我想知道点击Bitly链接的Android用户、苹果用户和网站用户的数量,这是我的代码

<script type="text/javascript">
    getMobileOperatingSystem();
    function getMobileOperatingSystem() {
        var userAgent = navigator.userAgent || navigator.vendor || window.opera;
        var url = "https://nch.mobi/334NXbn";
        var agnt = "web";
        var pge = "@ViewBag.campaignId";
        var link = '@Url.Action("_AddCount", "Home")';
        // Windows Phone must come first because its UA also contains "Android"
        if (/windows phone/i.test(userAgent)) {
            agnt="Windows Phone"
        }// android
        else if (/android/i.test(userAgent)) {
            url = "https://nch.mobi/3m1PM1q";
            agnt = "Android";
        }
        // iOS
        else if (/iPad|iPhone|iPod/.test(userAgent) && !window.MSStream) {
            url = "https://nch.mobi/35dOPNl";
            agnt = "IOS"
        }


        $.ajax({
            type: "POST",
            url: link,
            data: AddFormAntiForgeryToken({ 'campaign': pge, 'agent': agnt }),
            dataType: "json",
            success: function (response) {
                if (response.success) {
                    window.location.href = url;
                }
                else {
                    alert("Error occured.");
                }
            },
            error: function (jqXHR, textStatus, errorThrown) {
                console.log(textStatus, errorThrown);
            }
        });
    }
    function AddFormAntiForgeryToken(data) {
        data.__RequestVerificationToken = $("input[name='__RequestVerificationToken']").val();
        return data;
    }
</script>
但在我的例子中,Bitly中显示的总数应该与我在数据库中接收到的总数相同,但事实并非如此,尽管刷新我的页面时会跟踪新的单击,但在Bitly中,情况并非如此,我如何修正逻辑以获得相同的单击数


我感谢您的帮助。

您的缺点是bitly使用自己的系统。当您单击位链接时。您短暂地点击bitly服务器,bitly记录这些信息,然后将您重定向到您想去的地方

还有点可能是作为“防止滥用”的措施(以及其他措施)。刷新页面可能会导致此错误,并且不会记录另一次访问。它有很多方法可以处理这个问题,所以不知道它使用哪种方法。就如何跟踪链接而言,Bitly有自己的业务需求。这些需求可能与您的不同

它也可能在计算总链接时使用最终一致性。这意味着它会使日志单击,但不会立即更新显示计数的页面

虽然真正的问题可能是你为什么要数两次?为什么不使用Bitly的API直接获取计数,因为您已经为每个设置了单独的链接?如果你喜欢你的数字胜过比特利,那么你可能不需要太担心比特利


我的推荐?可以使用bitly的API获取总数,也可以使用您自己的数字。您自己的数字为您提供了更大的灵活性,因为您可以潜在地通过用户代理和IP地址过滤掉内容,并过滤掉重复的点击,尽管Bitly可能已经在相当程度上做到了这一点。

感谢您的推荐,我从不知道Bitly是自己的API,我会检查它。在web开发中,假设所有东西都有一个API是很好的,特别是如果它为开发人员提供服务的话@索拉
[HttpPost]
    public ActionResult _AddCount(string campaign, string agent)
    {
        CountTableHelper hlpe = new CountTableHelper();
        var t = new CountTable
        {
            Agent = agent,
            CampaignId = Convert.ToInt32(campaign),
            CreatedDate = DateTime.UtcNow,
            IpAddress = GetIpAddress()                
        };
        hlpe.Create(t);

        return Json(new { success = true }, JsonRequestBehavior.AllowGet);
    }