BuildCoreAdmin solrnetfacility正在返回nullpointer异常

时间:2015-09-26 11:57:03

标签: asp.net-mvc-3 nullpointerexception castle-windsor solrnet

需要交换核心,因此需要在我的solrFacility中设置SolrCoreAdmin,所以我可以在整个应用程序中使用我的Windsor容器来使用它。

当我执行以下操作时:

var solrFacility = new SolrNetFacility(ConfigurationSettings.ContentSearch_Solr_ServiceBaseAddress);

            solrFacility.AddCore(AgentsIndex.IndexName, typeof(AgentsIndexMapper), ConfigurationSettings.ContentSearch_Solr_ServiceBaseAddress +"/"+ AgentsIndex.IndexName);
            solrFacility.AddCore(AgentsIndex.SwapIndexName, typeof(AgentsIndexMapper), ConfigurationSettings.ContentSearch_Solr_ServiceBaseAddress + "/" + AgentsIndex.SwapIndexName);
            solrFacility.BuildCoreAdmin(ConfigurationSettings.ContentSearch_Solr_ServiceBaseAddress);
                _WindsorContainer.AddFacility("solr", solrFacility);

我收到以下错误:

[NullReferenceException: Object reference not set to an instance of an object.]
   Castle.Facilities.SolrNetIntegration.SolrNetFacility.BuildCoreAdmin(ISolrConnection conn) +40

我使用反射器在BuildCoreAdmin中查找代码,我认为它试图访问base.Kernel ...是null吗?我该如何设置内核?基本文件是AbstractFacility,它有一个函数setKernel。这个内核应该是什么?

我该如何解决这个问题?我是solrnet的新手,需要你的帮助。感谢您。 问候, Kasturi Chavan

1 个答案:

答案 0 :(得分:0)

我得到了解决方案。我做错了。考虑发布答案以帮助其他人。

当初始化solrnetfacility时,solrcoreadmin也被初始化。我后来将这个solrnetfacility添加到我的容器(在这种情况下是城堡windsor),所以我可以在整个应用程序中使用它。

后来当我想在重建后交换索引时,我就解决了它

ISolrCoreAdmin _ISolrCoreAdmin = c.GetContainer().Resolve<ISolrCoreAdmin>();
ResponseHeader response = _ISolrCoreAdmin.Swap(corename, othername);

一切都准备好了! 希望它可以帮助某人。非常感谢所提供的所有帮助。