Я пытаюсь использовать 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 есть еще одно сообщение о той же проблеме *1016*, хотя принят ответразмещение кода Startup.Init в Global.asax имеет отношение только к ASP.NET.
Перезапуск службы Tomcat7 решает проблему, но необходимость делать это после каждого запроса является болезненной.
Как правильно использовать библиотеку SolrNet для взаимодействия с Solr из консольного приложения C #?