Я пытаюсь использовать SolrNet в приложении командной строки (точнее, из LINQPad) для проверки некоторых запросов, и при попытке инициализировать библиотеку я получаю следующую ошибку:
Key 'SolrNet.Impl.SolrConnection.UserQuery+Resource.SolrNet.Impl.SolrConnection' already registered in container
Однако, если я поймаю эту ошибку и продолжу, ServiceLocator выдаст мне следующую ошибку:
Activation error occured while trying to get instance of type ISolrOperations`1, key ""
С внутренним исключением:
The given key was not present in the dictionary.
Мой полный код выглядит так:
try
{
Startup.Init<Resource>("http://localhost:8080/solr/");
Console.WriteLine("Initialized\n");
}
catch (Exception ex)
{
Console.WriteLine("Already Initialized: " + ex.Message);
}
// This line causes the error if Solr is already initialized
var solr = ServiceLocator.Current.GetInstance<ISolrOperations<Resource>>();
// Do the search
var results = solr.Query(new SolrQuery("title:test"));
Я использую Tomcat 7 в Windows 7x64 с установленным Solr 3.4.0.
В StackOverflow есть еще одно сообщение о той же проблеме, хотя принятый ответ о размещении код Startup.Init в Global.asax относится только к ASP.NET.
Перезапуск службы Tomcat7 решает проблему, но необходимость делать это после каждого запроса является проблемой.
Как правильно использовать библиотеку SolrNet для взаимодействия с Solr из консольного приложения C#?