【问题标题】:Sitecore MVC Unity Solr issueSitecore MVC Unity Solr 问题
【发布时间】:2016-02-12 02:32:11
【问题描述】:

我是 Sitecore、SoleNet 的新手。我已安装并配置 Solr 以与 Sitecore 一起使用,并且能够看到结果。 我现在正在使用代码。

我在 Start() 中将连接字符串添加到 UnityMVCActivator.cs Startup.Init("http://localhost:8983/solr/sitecore_web_index");

在我的控制器中 - Actionresults Index() var solr = ServiceLocator.Current.GetInstance>();

我收到此错误

[InvalidOperationException:类型 IsolrOperations1 没有 可访问的构造函数。] Microsoft.Practices.ObjectBuilder2.DynamicMethodConstructorStrategy.ThrowForNullExistingObject(IBuilderContext 上下文)+226 lambda_method(闭包,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(类型 t, Object existing, String name, IEnumerable1 resolverOverrides) +238

[ResolutionFailedException: 依赖解析失败,输入 =“SolrNet.ISolrOperations`1[Niddk.Model.SearchResultsViewModel]”,名称 =“(无)”。异常发生时:解决时。

异常是:InvalidOperationException - IsolrOperations`1 类型没有可访问的构造函数。

发生异常时,容器为:

解决 SolrNet.IsolrOperations1[Niddk.Model.SearchResultsViewModel],(无)] Microsoft.Practices.Unity.UnityContainer.DoBuildUp(类型 t,对象 现有,字符串名称,IEnumerable1 resolverOverrides) +500 Microsoft.Practices.Unity.UnityContainer.Resolve(类型 t,字符串名称, ResolverOverride[] resolverOverrides) +20 Microsoft.Practices.ServiceLocation.ServiceLocatorImplBase.GetInstance(类型 serviceType, String key) +55

[ActivationException: 尝试获取时发生激活错误 IsolrOperations1 类型的实例,键 ""] Microsoft.Practices.ServiceLocation.ServiceLocatorImplBase.GetInstance(类型 服务类型,字符串键)+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(闭包,ControllerBase,对象[])+87 System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext,IDictionary2 参数)+229 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext 控制器上下文,动作描述符动作描述符,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

我的视图模型

public class SearchResultsViewModel
{

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


}

非常感谢任何帮助。

谢谢!

【问题讨论】:

    标签: model-view-controller solr sitecore


    【解决方案1】:

    编辑:这个帖子也在 SolrNet 的 GitHub 中提出,项目维护者提供了正确的答案。

    问题是他使用内置的 IoC 进行注册,然后通过 Unity 解决。

    原始回复 我可能读错了您的代码,或者帖子中可能缺少某些内容,但您没有传递类型:

    在我的控制器中 - Actionresults Index()

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

    使用泛型时,您需要指定类型。我认为这部分甚至无法编译,因为 .GetInstance>() 不完整。

    【讨论】:

    • 我猜代码示例在复制/粘贴到 SO 时搞砸了
    • 是的,那是原始评论。我扩展为包括 SolrNet 维护者提供的真实响应。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-16
    • 1970-01-01
    • 2016-01-02
    相关资源
    最近更新 更多