Я использую контейнер Windsor для многоядерного доступа SolrNet, но мои ядра Solr требуют базовой аутентификации.Можно ли использовать интеграцию SolrNet Windsor с аутентификацией?
Я пробовал следующее:
static SolrInteractServer()
{
container.Register(Component.For<ISolrConnection>().ImplementedBy<SolrConnection>().DependsOn(Property.ForKey<IHttpWebRequestFactory>().Eq(new WebAuthentication("login", "password"))));
}
private static WindsorContainer container = new WindsorContainer();
public static void RegisterFacility<T>(IEnumerable<string> coreUrls, string baseHttpUrl = null)
{
SolrNetFacility facility = null;
if (baseHttpUrl != null)
{
facility = new SolrNetFacility(baseHttpUrl);
}
else
{
facility = new SolrNetFacility();
}
foreach (var httpUrl in coreUrls)
{
var coreName = "core_" + Guid.NewGuid();
facility.AddCore(coreName, typeof(T), httpUrl);
RegisteredCores.Add(coreName, new KeyValuePair<Type, string>(typeof(T), httpUrl));
}
container.AddFacility("solr", facility);
}
public static Dictionary<string, KeyValuePair<Type, string>> RegisteredCores = new Dictionary<string, KeyValuePair<Type, string>>();
Когда я запускаю контейнер. Броски AddFacility:
Компонент SolrNet.Impl.SolrConnection не может быть зарегистрирован.Уже есть компонент с таким именем.Вы хотите изменить существующий компонент?Если нет, убедитесь, что вы задали уникальное имя.
и трассировку стека:
в Castle.MicroKernel.SubSystems.Naming.DefaultNamingSubSystem.Register (IHandlerобработчик) в Castle.MicroKernel.AddCustomComponent (модель ComponentModel, логическое значение isMetaHandler) в Castle.MicroKernel.DefaultKernel.AddCustomComponent (модель ComponentModel) в Castle.MicroKernel.Registration.ComponentRegistration 1.Castle.MicroKernel.Registration.IRegistration.Register(IKernelInternal
kernel) at
Castle.MicroKernel.DefaultKernel.Register(IRegistration[]
registrations) at
Castle.Facilities.SolrNetIntegration.SolrNetFacility.Init() in
g:\prg\SolrNet\Castle.Facilities.SolrNetIntegration\SolrNetFacility.cs:line
80 at
Castle.MicroKernel.Facilities.AbstractFacility.Castle.MicroKernel.IFacility.Init(IKernel
kernel, IConfiguration facilityConfig) at
Castle.MicroKernel.DefaultKernel.AddFacility(IFacility facility) at
Castle.MicroKernel.DefaultKernel.AddFacility(String key, IFacility
facility) at Castle.Windsor.WindsorContainer.AddFacility(String
idInConfiguration, IFacility facility) at
SolrInteractionLogic.Core.SolrInteractServer
1.RegisterFacility [T] базовый_интеллектуальный_применяемый:1.Работа проектов \ 1.Выполняется \ Semantic Force \ Reporting \ SFDigestGenerator \ SolrInteractionLogic \ Core \ SolrInteractServer.cs: строка 58 в SolrInteractionTest.Program.Main (String [] args) в D: \ 1.Работа проектов \ 1.Выполняется \ Semantic Force \ Reporting \ SFDigestGenerator \ SolrInteractionTest \ Program.cs: строка 26 в System.AppDomain._nExecuteAssembly (сборка RuntimeAssembly, аргументы String []) в Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly (at) * 1018.Threading.ExecutionContext.Run (ExecutionContext executeContext, обратный вызов ContextCallback, состояние объекта, логическое значение ignoreSyncCtx) в System.Threading.ExecutionContext.Run (обратный вызов ExecutionContext executeContext, обратный вызов ContextCallback, состояние объекта) в System.Threading.ThreadHelper