SolrNet:尝试添加和提交时SolrConnectionException(400)错误请求

我已经到了SolrNet执行“添加”方法的地步,但当我尝试“提交”时,我收到错误。 以下是我的schema.xml,模型,调用它的代码以及我得到的错误。 甚至更奇怪的是,尽管有错误,我重新启动Tomcat之后模型被添加到我的Solr索引中(因此它仍然添加了我的模型,尽管错误但不是立即):

schema.xml(字段和字段):

                 

Model(Product.cs)*注意 – PageId使用Solr默认的“id”,它是一个字符串,唯一且必需:

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

代码初始化,调用Add和Commit *注意 – 这是一个unit testing,所以init只调用一次:

 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. 

错误消息:

 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(String relativeUrl, String 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(String relativeUrl, String s) in c:\prg\SolrNet\svn\SolrNet\Impl\SolrConnection.cs:line 101 InnerException: 

编辑感谢Paige的回答:问题是“waitFlush”错误,这是旧版SolrNet的错误。 我使用的SolrNet版本来自VS NuGet,为0.3.1(我认为是他们最新的稳定版本)。 他们的谷歌代码网站没有他们最新的版本,但构建服务器(这里: http : //teamcity.codebetter.com/project.html?projectId=project36&guest=1在“工件”下)确实有最新的修复这个bug。 问题解决了我。

我猜你可能在你的Tomcat日志中看到了一个waitFlush错误,而你正在使用Solr的4.X版本。 如果是这种情况,这是Solr 4.x和旧版SolrNet的已知问题。 要解决此问题,请升级到SolrNet库的更高版本。 您可以从Build Server下载它。 单击Artifacts以获取zip链接。