java声明公共构造函数_确保控制器具有无参数的公共构造函数错误

我已经按照这个tutorial进行了很好的工作,直到我修改了 DbContext 以获得额外的构造函数 . 我现在遇到了解决方案的问题,不知道如何解决这个问题 . 是否有一种简单的方法可以强制它 grab 无参数构造函数,或者我接近这个错误?

DbContext 有两个构造函数:

public class DashboardDbContext : DbContext

{

public DashboardDbContext() : base("DefaultConnection") { }

public DashboardDbContext(DbConnection dbConnection, bool owns)

: base(dbConnection, owns) { }

}

SiteController 构造函数:

private readonly IDashboardRepository _repo;

public SiteController(IDashboardRepository repo)

{

_repo = repo;

}

库:

DashboardDbContext _context;

public DashboardRepository(DashboardDbContext context)

{

_context = context;

}

UnityResolver 代码:

public class UnityResolver : IDependencyResolver

{

private readonly IUnityContainer _container;

public UnityResolver(IUnityContainer container)

{

_container = container;

}

public object GetService(Type serviceType)

{

try

{

return _container.Resolve(serviceType);

}

catch (ResolutionFailedException)

{

return null;

}

}

public IEnumerable GetServices(Type serviceType)

{

try

{

return _container.ResolveAll(serviceType);

}

catch (ResolutionFailedException)

{

return new List();

}

}

public IDependencyScope BeginScope()

{

var child = _container.CreateChildContainer();

return new UnityResolver(child);

}

public void Dispose()

{

_container.Dispose();

}

}

WebApiConfig:

var container = new UnityContainer();

container.RegisterType(new HierarchicalLifetimeManager());

config.DependencyResolver = new UnityResolver(container);

WebApi调用出错:

System.InvalidOperationException:尝试创建“SiteController”类型的控制器时发生错误 . 确保控制器具有无参数的公共构造函数 .

at System.Web.Http.Dispatcher.DefaultHttpControllerActivator.Create(HttpRequestMessage request, HttpControllerDescriptor controllerDescriptor, Type controllerType)

at System.Web.Http.Controllers.HttpControllerDescriptor.CreateController(HttpRequestMessage request)

at System.Web.Http.Dispatcher.HttpControllerDispatcher.SendAsyncCore(HttpRequestMessage request, CancellationToken cancellationToken)

at System.Web.Http.Dispatcher.HttpControllerDispatcher.d__0.MoveNext()

InnerException:System.ArgumentException:Type'Dashboard.Web.Controllers.SiteController'没有默认构造函数 .

at System.Linq.Expressions.Expression.New(Type type)

at System.Web.Http.Internal.TypeActivator.Create[TBase](Type instanceType)

at System.Web.Http.Dispatcher.DefaultHttpControllerActivator.GetInstanceOrActivator(HttpRequestMessage request, Type controllerType, Func`1& activator)

at System.Web.Http.Dispatcher.DefaultHttpControllerActivator.Create(HttpRequestMessage request, HttpControllerDescriptor controllerDescriptor, Type controllerType)

该教程非常棒,并且在我添加第二个构造函数之前一直很好用 .

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值