2017-07-15 3 views
0

J'essaie de configurer CouchbaseServer avec Web Api afin que je puisse utiliser N1QL pour déclencher une requête SQL sur la base de données NOSQL Couchbase. Mais je rencontre une exception dans Getting Bucket. Voici comment mon CouchBaseConfig ressemble à:L'authentification a échoué pour le seau "Bucket Name" pour CouchbaseServer avec Web Api

public static class CouchbaseConfig 
    { 
     private static readonly List<string> TravelSampleIndexNames = new List<string> 
     { 
      "def_sourceairport", 
      "def_airportname", 
      "def_type", 
      "def_faa", 
      "def_icao", 
      "def_city" 
     }; 

     public static void Register() 
     { 
      var couchbaseServer = ConfigurationManager.AppSettings.Get("CouchbaseServer"); 
      ClusterHelper.Initialize(new ClientConfiguration 
      { 
       Servers = new List<Uri> { new Uri(couchbaseServer) } 
      }); 

      var bucketName = ConfigurationManager.AppSettings.Get("CouchbaseTravelBucket"); 
      var username = ConfigurationManager.AppSettings.Get("CouchbaseUser"); 
      var password = ConfigurationManager.AppSettings.Get("CouchbasePassword"); 

      EnsureIndexes(bucketName, username, password); 
     } 

     private static void EnsureIndexes(string bucketName, string username, string password) 
     { 
      var bucket = ClusterHelper.GetBucket(bucketName, password); 
      var bucketManager = bucket.CreateManager(username, password); 

      var indexes = bucketManager.ListN1qlIndexes(); 
      if (!indexes.Any(index => index.IsPrimary)) 
      { 
       bucketManager.CreateN1qlPrimaryIndex(true); 
      } 

      var missingIndexes = TravelSampleIndexNames.Except(indexes.Where(x => !x.IsPrimary).Select(x => x.Name)).ToList(); 
      if (!missingIndexes.Any()) 
      { 
       return; 
      } 

      foreach (var missingIndex in missingIndexes) 
      { 
       var propertyName = missingIndex.Replace("def_", string.Empty); 
       bucketManager.CreateN1qlIndex(missingIndex, true, propertyName); 
      } 

      bucketManager.BuildN1qlDeferredIndexes(); 
      bucketManager.WatchN1qlIndexes(missingIndexes, TimeSpan.FromSeconds(30)); 
     } 

     public static void CleanUp() 
     { 
      ClusterHelper.Close(); 
     } 

Mais quand je lance l'application Web, je reçois l'erreur suivante:

AuthenticationException: Authentication failed for bucket 'travel-sample'] 

Snapshot of the exception

Quelqu'un peut-il s'il vous plaît aidez-moi à résoudre ce problème. Merci d'avance !!

+0

Avez-vous et vérifiez si déboguer vous obtenez des valeurs correctes de nom d'utilisateur et mot de passe de la configuration de l'application? –

+0

Oui, j'ai vérifié. Je reçois la valeur correcte de nom d'utilisateur et mot de passe. @ChetanRanpariya –

+0

Quelle version du serveur SDK et Couchbase utilisez-vous? – jeffrymorris

Répondre

0

J'ai dépassé cette erreur en changeant CouchbaseConfig.Register comme suit:

public static void Register() 
{ 
    var couchbaseServer = ConfigurationManager.AppSettings.Get("CouchbaseServer"); 
    var username = ConfigurationManager.AppSettings.Get("CouchbaseUser"); 
    var password = ConfigurationManager.AppSettings.Get("CouchbasePassword"); 

    ClusterHelper.Initialize(
     new ClientConfiguration 
     { 
      Servers = new List<Uri> { new Uri(couchbaseServer) }, 
     }, 
     new PasswordAuthenticator(username, password)); 

    var bucketName = ConfigurationManager.AppSettings.Get("CouchbaseTravelBucket"); 

    EnsureIndexes(bucketName, username, password); 
}