2013-08-22 1 views
4

우리는 인트라넷 환경에서 패키지를 제공하기 위해 전용 Nuget 저장소를 사용하고 있습니다. 기본 통계를 만들기 위해 다운로드 한 패키지를 추적 할 수 있습니까? 예를 들어 어떤 패키지가 가장 많이 다운로드되었는지 등등.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); 
    } 
} 

을 다음 MyPackageService에 리 바인드 Routes.cs을 변경합니다.

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을 사용하면 작동이 멈췄을 것입니다 (디버거가 제 클래스에 충돌하지 않은 것 같습니다). 나는 혼란스러워. : –

관련 문제