C# Nuget关于Unity投掷500的更新;确保控制器具有无参数公共构造函数。”;,

C# Nuget关于Unity投掷500的更新;确保控制器具有无参数公共构造函数。”;,,c#,visual-studio,dependency-injection,inversion-of-control,unity-container,C#,Visual Studio,Dependency Injection,Inversion Of Control,Unity Container,因此,我有一个与Unity完美合作的WebApi服务。我决定使用Nuget软件包更新,它重写了UnityConfig.cs,但是,我添加了我的代码,当我尝试从VisualStudio运行它时,它可以正常工作。问题是当我部署bin并尝试从IIS运行api时。我得了500分,但有以下例外: Exception.Source=System.Web.Http.Dispatcher.DefaultHttpControllerActivator Exception.Message=尝试创建“StateCon

因此,我有一个与Unity完美合作的WebApi服务。我决定使用Nuget软件包更新,它重写了UnityConfig.cs,但是,我添加了我的代码,当我尝试从VisualStudio运行它时,它可以正常工作。问题是当我部署bin并尝试从IIS运行api时。我得了500分,但有以下例外:

Exception.Source=System.Web.Http.Dispatcher.DefaultHttpControllerActivator Exception.Message=尝试创建“StateController”类型的控制器时出错。确保控制器具有无参数公共构造函数

//
///指定主容器的统一配置。
/// 
公共静态类UnityConfig
{
#区域统一容器
私有静态惰性容器=
新懒惰(()=>
{
var container=new UnityContainer();
注册类型(容器);
返回容器;
});
/// 
///配置的Unity容器。
/// 
公共静态IUnityContainer Container=>Container.Value;
#端区
公共静态无效注册表类型(IUnityContainer容器)
{
字符串dbConnectionString=WebConfiguration Manager.ConnectionString[“abc”].ConnectionString;
StateRepository StateRepository=新的StateRepository(dbConnectionString);
//注册具有单例生存期的默认(未命名)类型映射
容器.RegisterInstance(stateRepository);
}
}   
她的是我的UnityWebpiActivator.cs

using System.Web.Http;
using Unity.AspNet.WebApi;
[assembly: WebActivatorEx.PreApplicationStartMethod(typeof(PowerManagementServices.UnityWebApiActivator), nameof(PowerManagementServices.UnityWebApiActivator.Start))]
[assembly: WebActivatorEx.ApplicationShutdownMethod(typeof(PowerManagementServices.UnityWebApiActivator), nameof(PowerManagementServices.UnityWebApiActivator.Shutdown))]
namespace PowerManagementServices
{
    /// <summary>
    /// Provides the bootstrapping for integrating Unity with WebApi when it is hosted in ASP.NET.
    /// </summary>
    public static class UnityWebApiActivator
    {
        /// <summary>
        /// Integrates Unity when the application starts.
        /// </summary>
        public static void Start() 
        {
            // Use UnityHierarchicalDependencyResolver if you want to use
            // a new child container for each IHttpController resolution.
            // var resolver = new UnityHierarchicalDependencyResolver(UnityConfig.Container);
            var resolver = new UnityDependencyResolver(UnityConfig.Container);
            GlobalConfiguration.Configuration.DependencyResolver = resolver;
        }
        /// <summary>
        /// Disposes the Unity container when the application is shut down.
        /// </summary>
        public static void Shutdown()
        {
            UnityConfig.Container.Dispose();
        }
    }
}
使用System.Web.Http;
使用Unity.AspNet.WebApi;
[程序集:WebActivatorEx.PreApplicationStartMethod(类型为(PowerManagementServices.UnityWebPiActivator),名称为(PowerManagementServices.UnityWebPiActivator.Start))]
[程序集:WebActivatorEx.ApplicationShutdownMethod(类型为(PowerManagementServices.UnityWebPiActivator),名称为(PowerManagementServices.UnityWebPiActivator.Shutdown))]
命名空间PowerManagementServices
{
/// 
///当Unity托管在ASP.NET中时,提供将其与WebApi集成的引导。
/// 
公共静态类UnityWebPiActivator
{
/// 
///在应用程序启动时集成Unity。
/// 
公共静态void Start()
{
//如果要使用,请使用UnityHierarchicalDependencyResolver
//每个IHTTP控制器分辨率的新子容器。
//var解析器=新的UnityHierarchicalDependencyResolver(UnityConfig.Container);
var resolver=new unitydependencysolver(UnityConfig.Container);
GlobalConfiguration.Configuration.DependencyResolver=解析程序;
}
/// 
///在应用程序关闭时处置Unity容器。
/// 
公共静态无效关机()
{
UnityConfig.Container.Dispose();
}
}
}
少了什么?正如我提到的,在我接受nuget更新之前,这个服务工作得非常好。现在它可以在VS上工作,但在部署时无法工作


提前感谢。

您的StateController类的构造函数是什么样子的?私有只读IStateRepository stateRepository;publicstatecontroller(IStateRepository服务){stateRepository=service;}我几乎想相信它没有正确编译。
using System.Web.Http;
using Unity.AspNet.WebApi;
[assembly: WebActivatorEx.PreApplicationStartMethod(typeof(PowerManagementServices.UnityWebApiActivator), nameof(PowerManagementServices.UnityWebApiActivator.Start))]
[assembly: WebActivatorEx.ApplicationShutdownMethod(typeof(PowerManagementServices.UnityWebApiActivator), nameof(PowerManagementServices.UnityWebApiActivator.Shutdown))]
namespace PowerManagementServices
{
    /// <summary>
    /// Provides the bootstrapping for integrating Unity with WebApi when it is hosted in ASP.NET.
    /// </summary>
    public static class UnityWebApiActivator
    {
        /// <summary>
        /// Integrates Unity when the application starts.
        /// </summary>
        public static void Start() 
        {
            // Use UnityHierarchicalDependencyResolver if you want to use
            // a new child container for each IHttpController resolution.
            // var resolver = new UnityHierarchicalDependencyResolver(UnityConfig.Container);
            var resolver = new UnityDependencyResolver(UnityConfig.Container);
            GlobalConfiguration.Configuration.DependencyResolver = resolver;
        }
        /// <summary>
        /// Disposes the Unity container when the application is shut down.
        /// </summary>
        public static void Shutdown()
        {
            UnityConfig.Container.Dispose();
        }
    }
}