When should the NuGet Gallery index be updated?

I recently installed a local NuGet gallery from the GitHub instructions .

It seems to work correctly when I download the packages through the UI, but the packages clicked using the command line don't show up in the search results. The package windows say "Search index updated 55 minutes ago." This corresponds to when I published the last website. What determines when the search index is running? A quick look at the code makes it look like it should happen whenever you add / remove a package, but it doesn't seem to do it.

How do I increase the frequency of indexing?

+3


source to share


1 answer


In your NuGetGallery project go to method CreatePackageInternal

in /Controllers/ApiController

and call this line before the statement return

.

IndexingService.UpdateIndex(true);

      



Your code should be something like this

    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);
    }

      

+3


source







All Articles