2014-11-12 10 views
3

최근에 GitHub의 지침에 따라 로컬 NuGet 갤러리를 설치했습니다.언제 NuGet 갤러리 검색 색인 업데이트를해야합니까?

UI를 통해 패키지를 업로드 할 때 제대로 작동하지만 명령 줄을 사용하여 푸시 된 패키지가 검색 결과에 나타나지 않습니다. 패키지 창에 "검색 색인이 마지막으로 업데이트 된 지 55 분 전"이라고 표시됩니다. 이것은 내가 웹 사이트를 마지막으로 게시 한시기와 일치합니다. 검색 색인 실행시기는 무엇입니까? 코드를 간략하게 살펴보면 패키지를 추가/제거 할 때마다 발생하는 것처럼 보이지만 실제로는 나타나지 않습니다.

어떻게 색인 생성 빈도를 높일 수 있습니까?

답변

3

NuGetGallery 프로젝트에서 /Controllers/ApiControllerCreatePackageInternal 메서드로 이동하여 return 문 앞에이 줄을 호출하십시오.

IndexingService.UpdateIndex(true); 

코드는 다음과

private async Task<ActionResult> CreatePackageInternal() 
    { 
     // Get the user 
     var user = GetCurrentUser(); 

     using (var packageToPush = ReadPackageFromRequest()) 
     { 
      if (packageToPush.Metadata.MinClientVersion > typeof(Manifest).Assembly.GetName().Version) 
      { 
       return new HttpStatusCodeWithBodyResult(HttpStatusCode.BadRequest, String.Format(
        CultureInfo.CurrentCulture, 
        Strings.UploadPackage_MinClientVersionOutOfRange, 
        packageToPush.Metadata.MinClientVersion)); 
      } 

      // Ensure that the user can push packages for this partialId. 
      var packageRegistration = PackageService.FindPackageRegistrationById(packageToPush.Metadata.Id); 
      if (packageRegistration != null) 
      { 
       if (!packageRegistration.IsOwner(user)) 
       { 
        return new HttpStatusCodeWithBodyResult(HttpStatusCode.Forbidden, Strings.ApiKeyNotAuthorized); 
       } 

       // Check if a particular Id-Version combination already exists. We eventually need to remove this check. 
       string normalizedVersion = packageToPush.Metadata.Version.ToNormalizedString(); 
       bool packageExists = 
        packageRegistration.Packages.Any(
         p => String.Equals(
          p.NormalizedVersion, 
          normalizedVersion, 
          StringComparison.OrdinalIgnoreCase)); 

       if (packageExists) 
       { 
        return new HttpStatusCodeWithBodyResult(
         HttpStatusCode.Conflict, 
         String.Format(CultureInfo.CurrentCulture, Strings.PackageExistsAndCannotBeModified, 
             packageToPush.Metadata.Id, packageToPush.Metadata.Version.ToNormalizedStringSafe())); 
       } 
      } 

      var package = PackageService.CreatePackage(packageToPush, user, commitChanges: false); 
      AutoCuratePackage.Execute(package, packageToPush, commitChanges: false); 
      EntitiesContext.SaveChanges(); 

      using (Stream uploadStream = packageToPush.GetStream()) 
      { 
       await PackageFileService.SavePackageFileAsync(package, uploadStream); 
      } 
     } 

     IndexingService.UpdateIndex(true); 

     return new HttpStatusCodeResult(HttpStatusCode.Created); 
    } 
과 같이해야합니다