WebApi.UnityDependencyResolver不实现Microsoft.Practices.ServiceLocation.IServiceLocator.参数:commonServiceLocator [英] WebApi.UnityDependencyResolver does not implement Microsoft.Practices.ServiceLocation.IServiceLocator. Parameter : commonServiceLocator

查看:208
本文介绍了WebApi.UnityDependencyResolver不实现Microsoft.Practices.ServiceLocation.IServiceLocator.参数:commonServiceLocator的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我尝试运行以下代码:

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;
                }
            }
        }
    }
}

ad收到以下异常:

The type Unity.WebApi.UnityDependencyResolver does not appear to implement Microsoft.Practices.ServiceLocation.IServiceLocator. Parameter name: commonServiceLocator

The type Unity.WebApi.UnityDependencyResolver does not appear to implement Microsoft.Practices.ServiceLocation.IServiceLocator. Parameter name: commonServiceLocator

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

I have tried to install webApi package but it didn't help

推荐答案

在您的Initialize方法中,替换:

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

具有:

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

现在您了解问题所在了:

Now you understand what the problem is:

System.Web.Http.Dependencies.IDependencyResolver (由Web API使用)和

System.Web.Http.Dependencies.IDependencyResolver (used by the Web API) and System.web.Mvc.IDependencyResolver (used by ASP.NET MVC) are two completely different types (even if they have the same name) and yet you attempt to assign both of them to the same type (UnityDependencyResolver) which obviously cannot work.

这篇关于WebApi.UnityDependencyResolver不实现Microsoft.Practices.ServiceLocation.IServiceLocator.参数:commonServiceLocator的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆