gpt4 book ai didi

c# - WebApi.UnityDependencyResolver 没有实现 Microsoft.Practices.ServiceLocation.IServiceLocator。参数 : commonServiceLocator

转载 作者:可可西里 更新时间:2023-11-01 08:51:16 27 4
gpt4 key购买 nike

我尝试运行以下代码:

using System.Web.Http;
using System.Web.Mvc;
using Conduit.Mam.ClientSerivces.Dal.Configuration;
using MamInfrastructure.Common.Dal;
using MamInfrastructure.Common.Logger;
using MamInfrastructure.Logger;
using Microsoft.Practices.Unity;
using Unity.WebApi;

namespace Conduit.Mam.ClientServices.Common.Initizliaer
{
public static class Initializer
{
private static bool isInitialize;
private static readonly object LockObj = new object();
private static IUnityContainer defaultContainer = new UnityContainer();

static Initializer()
{
Initialize();
}

public static void Initialize()
{
if (isInitialize)
return;

lock (LockObj)
{
IUnityContainer container = defaultContainer;

//registering Unity for web API
GlobalConfiguration.Configuration.DependencyResolver = new UnityDependencyResolver(container);
//registering Unity for MVC
DependencyResolver.SetResolver(new UnityDependencyResolver(container));

container.RegisterType<IDal<ClientService.DAL.EntityFramework.MamConfiguration>, MamConfigurationDal>();
container.RegisterType<IApplicationLogger, Log4NetLogger>();

if (!isInitialize)
{
isInitialize = true;
}
}
}
}
}

广告得到以下异常:

Unity.WebApi.UnityDependencyResolver 类型似乎没有实现 Microsoft.Practices.ServiceLocation.IServiceLocator。
参数名称:commonServiceLocator

我尝试安装 webApi 包,但没有帮助

最佳答案

在您的 Initialize 方法中替换:

GlobalConfiguration.Configuration.DependencyResolver = new UnityDependencyResolver(container);

与:

GlobalConfiguration.Configuration.DependencyResolver = new Unity.WebApi.UnityDependencyResolver(container);

现在你明白问题是什么了:

System.Web.Http.Dependencies.IDependencyResolver (由 Web API 使用)和 System.web.Mvc.IDependencyResolver (由 ASP.NET MVC 使用)是两种完全不同的类型(即使它们具有相同的名称),但您试图将它们都分配给相同的类型(UnityDependencyResolver),这显然是行不通的。

关于c# - WebApi.UnityDependencyResolver 没有实现 Microsoft.Practices.ServiceLocation.IServiceLocator。参数 : commonServiceLocator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14012735/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com