SolrNet: SolrConnectionException (400) mauvaise requête lors d’une tentative d’ajout et de validation

Je suis arrivé au point où SolrNet exécute la méthode “Ajouter”, mais lorsque j’essaie de “valider”, c’est quand je reçois l’erreur. Voici mon schéma.xml, mon modèle, le code l’appelant et l’erreur que j’obtiens. Encore plus étrange, c’est que malgré l’erreur, le modèle est ajouté à mon index Solr APRÈS le redémarrage de Tomcat (il ajoute donc mon modèle malgré l’erreur mais pas immédiatement):

schema.xml (champs et types de champs):

                 

Model (Product.cs) * NOTE – PageId utilise “id” par défaut pour Solr, qui est une chaîne, unique et obligatoire:

 public class Product { [SolrUniqueKey("id")] public ssortingng PageId { get; set; } [SolrField("part_numbers")] public ICollection PartNumbers { get; set; } [SolrField("page_url")] public ssortingng PageUrl { get; set; } [SolrField("product_name")] public ssortingng Name { get; set; } } 

Initialisation du code, appelez Add and Commit *. NOTE – Il s’agit d’un test unitaire, init n’est donc appelé qu’une fois:

 Startup.Init("http://localhost:8080/solr"); Product testProd = new Product() { EPiPageId = "44", Name = "TestProd3", PageUrl = "/TestProd3", PartNumbers = new List() { "000022222", "000000333333" } }; var solr = ServiceLocator.Current.GetInstance<ISolrOperations>(); solr.Add(testProd); solr.Commit(); // Bad Request Error occurs here. 

Message d’erreur:

 SolrNet.Exceptions.SolrConnectionException was unhandled by user code HResult=-2146232832 Message=The remote server returned an error: (400) Bad Request. Source=SolrNet StackTrace: at SolrNet.Impl.SolrConnection.Post(Ssortingng relativeUrl, Ssortingng s) in c:\prg\SolrNet\svn\SolrNet\Impl\SolrConnection.cs:line 104 at SolrNet.Commands.CommitCommand.Execute(ISolrConnection connection) in c:\prg\SolrNet\svn\SolrNet\Commands\CommitCommand.cs:line 71 at SolrNet.Impl.SolrBasicServer`1.Send(ISolrCommand cmd) in c:\prg\SolrNet\svn\SolrNet\Impl\SolrBasicServer.cs:line 87 at SolrNet.Impl.SolrBasicServer`1.SendAndParseHeader(ISolrCommand cmd) in c:\prg\SolrNet\svn\SolrNet\Impl\SolrBasicServer.cs:line 91 at SolrNet.Impl.SolrBasicServer`1.Commit(CommitOptions options) in c:\prg\SolrNet\svn\SolrNet\Impl\SolrBasicServer.cs:line 54 at SolrNet.Impl.SolrServer`1.Commit() in c:\prg\SolrNet\svn\SolrNet\Impl\SolrServer.cs:line 24 InnerException: System.Net.WebException HResult=-2146233079 Message=The remote server returned an error: (400) Bad Request. Source=System StackTrace: at System.Net.HttpWebRequest.GetResponse() at HttpWebAdapters.Adapters.HttpWebRequestAdapter.GetResponse() in c:\prg\SolrNet\svn\HttpWebAdapters\Impl\HttpWebRequestAdapter.cs:line 36 at SolrNet.Impl.SolrConnection.GetResponse(IHttpWebRequest request) in c:\prg\SolrNet\svn\SolrNet\Impl\SolrConnection.cs:line 160 at SolrNet.Impl.SolrConnection.Post(Ssortingng relativeUrl, Ssortingng s) in c:\prg\SolrNet\svn\SolrNet\Impl\SolrConnection.cs:line 101 InnerException: 

EDIT Merci à Paige pour la réponse: Le problème était une erreur “waitFlush” qui correspond à un bogue avec les anciennes versions de SolrNet. La version de SolrNet que j’utilisais provenait de VS NuGet, une version 0.3.1 (qui, je suppose, était leur dernière version stable). La version la plus récente de leur site de code Google n’a pas été créée, mais le serveur de génération (ici: http://teamcity.codebetter.com/project.html?projectId=project36&guest=1 sous “artefacts”) disposait de la dernière version avec le correctif ce bug. Problème résolu pour moi.

Je suppose que vous voyez probablement une erreur waitFlush dans vos journaux Tomcat et que vous utilisez la version 4.X de Solr. Si tel est le cas, il s’agit d’un problème connu avec Solr 4.x et les versions antérieures de SolrNet. Pour résoudre ce problème, effectuez une mise à niveau vers une version ultérieure de la bibliothèque SolrNet. Vous pouvez le télécharger depuis le serveur de compilation . Cliquez sur Artefacts pour obtenir un lien vers le zip.