Привет, у меня очень большая проблема. Мне нужно взять/создать соединение с одним ядром с одним типом и выполнить любые операции. На данный момент его выглядит следующим образом:SolrNet множественное соединение с одним ядром и типом
public class SolrMachine<T> : ISolrMachine<T> where T : ISolrRecord
{
private ISolrOperations<T> actuallyInstance { get; set; }
public SolrMachine(string coreName)
{
string url = String.Format("http://xxxx/solr/{0}", coreName);
ISolrConnection solrConnection = new SolrConnection(url) { HttpWebRequestFactory = new SolrAuthWebRequestFactory()};
Startup.Init<T>(solrConnection);
var myInstance = ServiceLocator.Current.GetInstance<ISolrOperations<T>>();
this.actuallyInstance = myInstance;
}
}
ISolrMachine<T>
представляет собой интерфейс с моими методами работать на ядре Solr. ISolrRecord
- это интерфейс со свойствами в моих ядрах.
Теперь, когда я делаю связь с двумя другими ядрами, все работает отлично.
SolrMachine<SolrTypeOne> firstCoreConnection = new SolrMachine<SolrTypeOne>(firstCoreName);
SolrMachine<SolrTypeTwo> secondCoreConnection = new SolrMachine<SolrTypeTwo>(secondCoreName);
// operation on firstCoreConnection and secondCoreConnection works
Но когда я пытаюсь соединиться с одним типом и один coreName у меня есть исключение на Startup.Init<T>(solrConnection)
. Я знаю, что контейнер Startup
блокирует соединение с теми же Type
и coreName
, но всегда создаю новый экземпляр для этого SolrMachine. Я ожидаю этого:
class SomeClass
{
public MyMethod()
{
SolrMachine<SolrTypeOne> myConn = new SolrMachine<SolrTypeOne>(firstCoreName);
// operation
}
}
class SecondSomeClass
{
public MyMethod()
{
SolrMachine<SolrTypeOne> myConn2 = new SolrMachine<SolrTypeOne>(firstCoreName);
// here it's not work
}
}
Как этого избежать?
https://github.com/mausch/SolrNet/blob/master/Documentation/Multi-core-instance.md –
Существует ответ для моего случая? :) – Sidron
«Встроенный контейнер в настоящее время ограничен доступом к нескольким ядрам/экземплярам с разными отображаемыми типами». –