2016-02-12 2 views
0

Я новичок в Sitecore, SoleNet. Я установил и настроил Solr для работы с Sitecore, и я могу видеть результаты. Теперь я использую код.Sitecore MVC Unity Solr issue

Я добавил строку подключения в UnityMVCActivator.cs в Start() Startup.Init ("http://localhost:8983/solr/sitecore_web_index");

В моем контроллере - указатель результативности() var solr = ServiceLocator.Current.GetInstance>();

Я получаю эту ошибку

[InvalidOperationException:. Тип ISolrOperations1 не имеет доступный конструктор] Microsoft.Practices.ObjectBuilder2.DynamicMethodConstructorStrategy.ThrowForNullExistingObject (IBuilderContext контекст) +226 lambda_method (Closure, IBuilderContext) +39 Microsoft.Practices.ObjectBuilder2. <> c__DisplayClass1.b__0 (IBuilderContext контекст) +33 Microsoft.Practices.ObjectBuilder2.BuildPlanStrategy.PreBuildUp (IBuilderContext контекст) +337 Microsoft.Practices.ObjectBuilder2.StrategyChain.ExecuteBuildUp (IBuilderContext контекст) +396 Microsoft.Practices. Unity.UnityContainer.DoBuildUp (тип т, объект, существующий, имя String, IEnumerable1 resolverOverrides) +238

[ResolutionFailedException: Постановление зависимости не удалось, тип = «SolrNet.ISolrOperations`1 [Niddk.Model.SearchResultsViewModel] ", name =" (none) ". Исключение произошло во время: при разрешении.

Исключение: InvalidOperationException - тип ISolrOperations`1 не имеет доступного конструктора.

В момент, за исключением, контейнер был:

Устранение SolrNet.ISolrOperations1 [Niddk.Model.SearchResultsViewModel], (нет)] Microsoft.Practices.Unity.UnityContainer.DoBuildUp (тип т, Object существующий, имя String, IEnumerable1 resolverOverrides) +500 Microsoft.Practices.Unity.UnityContainer.Resolve (тип Т, имя строки, ResolverOverride [] resolverOverrides) +20 Microsoft.Practices.ServiceLocation.ServiceLocatorImplBase.GetInstance (Тип serviceType, String key) +55

[ActivationException: Ошибка активации произошла при попытке получить экземпляр типа ISolrOperations1, ключ ""] Microsoft.Practices.ServiceLocation.ServiceLocatorImplBase.GetInstance (тип ServiceType, String ключ) +156 Microsoft.Practices.ServiceLocation .ServiceLocatorImplBase.GetInstance() +62 Niddk.Web.Controllers.SearchController.Index() в C: \ Users \ ksivanandan \ Source \ Repos \ web \ Niddk \ Niddk.Web \ Controllers \ SearchController.cs: 23 lambda_method (Closure, ControllerBase, Object []) +87 System.Web.Mvc.ReflectedActionDescriptor.Execute (ControllerContext controllerContext, IDictionary2 parameters) +229 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod (ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary2 ) +35 System.Web.Mvc. <> c__DisplayClass15.b__12() +80 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter (IActionFilter фильтр, ActionExecutingContext preContext, Func1 продолжение) +453 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter (IActionFilter фильтр, ActionExecutingContext preContext, Func`1 продолжение) +453 System.Web.Mvc.ControllerActionInvoker.InvokeAction (controllerContext controllerContext, String ActionName) +533

Мои ViewModel

public class SearchResultsViewModel 
{ 

    [SolrField("headline_t")] 
    public string Headline { get; set; } 


} 

Любая помощь очень ценится.

Спасибо!

ответ

0

Редактировать: эта нить также была поднята в GitHub в SolrNet, и разработчик проекта предоставил правильный ответ.

Проблема в том, что для регистрации он использует встроенный IoC, но затем разрешает через Unity.

Оригинальный ответ я могу читать ваш код неправильно или что-то может отсутствовать с поста, но вы не пропуская типа:

В моем контроллере - Actionresults Index()

var solr = ServiceLocator.Current.GetInstance<[you are missing this part]>();

При использовании дженериков вам необходимо указать тип. Я думаю, эта часть даже не будет компилироваться из-за того, что .GetInstance>() является неполным.

+0

Я бы предположил, что образец кода был испорчен в копии/вставке для SO –

+0

Да, это был оригинальный комментарий. Я расширил его, включив в него реальный отклик, предоставленный сопровождающим SolrNet. – xmorera