2013-08-22 31 views
4

我们使用私人的Nuget存储库在Intranet环境中提供服务包。是否有可能跟踪下载哪些软件包以创建基本统计数据?例如哪些软件包被下载得最多等等。如何跟踪Nuget.Server上的软件包下载?

+0

参见:http://stackoverflow.com/questions/17448071/nuget-private-feed-not-updating-downloadcount –

回答

1

想必你有一个使用NuGet.Server包的ASP.NET应用程序。

然后添加一些日志记录会很容易。您可以装点PackageService:

public class MyPackageService : IPackageService 
{ 
    public MyPackageService(PackageService packageService) 
    { 
     _PackageService = packageService; 
    } 

    private readonly PackageService _PackageService; 

    public void CreatePackage(HttpContextBase context) 
    { 
     _PackageService.CreatePackage(context); 
    } 

    public void DeletePackage(HttpContextBase context) 
    { 
     _PackageService.DeletePackage(context); 
    } 

    public void DownloadPackage(HttpContextBase context) 
    { 
     // LOG HERE 
     Log(context); 
     _PackageService.DownloadPackage(context); 
    } 

    public void PublishPackage(HttpContextBase context) 
    { 
     _PackageService.PublishPackage(context); 
    } 
} 

,然后更改Routes.cs重新绑定到MyPackageService

public static class NuGetRoutes { 

    public static void Start() { 
     NinjectBootstrapper.Kernel.Rebind<IPackageService>().To<MyPackageService>(); 
     MapRoutes(RouteTable.Routes); 
    } 

    //... 
} 
+0

不知怎的,它从来没有碰到CreatePackageService ... –

+0

你是正确的! (我不知道为什么'CreatePackageService'甚至在那里没有调用。)重新绑定内核似乎工作。我已经修改了上面的'NuGetRoutes.Start()'。 – shamp00

+0

您使用的是什么版本的Nuget.Server?看起来,它停止工作(调试器不打我的课)与Nuget.Server 2.7.0再次。我很困惑。 :( –