C# Asp.Net MVC Unity dependency injection在尝试解析控制器时出现异常
我第一次尝试实施依赖性注射。我在公司的其他工作项目和网络内容中工作 我遇到了这样一种情况:解析器试图解析控制器类型。我没有注册任何控制器类型,也没有看到任何类似的东西,所以我很困惑 以下是我在Global.asax.cs的注册信息: 以下是发生异常的UnityDependencyResolver方法:C# Asp.Net MVC Unity dependency injection在尝试解析控制器时出现异常,c#,asp.net-mvc,nhibernate,dependency-injection,unity-container,C#,Asp.net Mvc,Nhibernate,Dependency Injection,Unity Container,我第一次尝试实施依赖性注射。我在公司的其他工作项目和网络内容中工作 我遇到了这样一种情况:解析器试图解析控制器类型。我没有注册任何控制器类型,也没有看到任何类似的东西,所以我很困惑 以下是我在Global.asax.cs的注册信息: 以下是发生异常的UnityDependencyResolver方法: private readonly IUnityContainer _container; public UnityDependencyResolver(IUnityContainer conta
private readonly IUnityContainer _container;
public UnityDependencyResolver(IUnityContainer container)
{
this._container = container;
}
public object GetService(Type serviceType)
{
if (!_container.IsRegistered(serviceType))
{
if (serviceType.IsAbstract || serviceType.IsInterface)
{
return null;
}
}
return _container.Resolve(serviceType); // Right on this line the exception occurs
}
这是例外主体:
Microsoft.Practices.Unity.ResolutionFailedException类型的异常发生在Microsoft.Practices.Unity.dll中,但未在用户代码中处理
其他信息:依赖项解析失败,类型=Tasks.Controllers.TasksController,名称=无
解析时发生异常
异常为:InvalidOperationException-当前类型NHibernate.ISessionFactory是一个接口,无法构造。是否缺少类型映射
如您所见,当解析程序在serviceType中获取要解析的TasksController类型并崩溃时,就会出现问题
这是我的controllerIt的相关部分它是项目中唯一的注入,如果它有帮助的话:
protected TaskService TaskService { get; set; }
public TasksController(TaskService taskService)
{
this.TaskService = taskService;
}
为什么会发生这种情况?有一个名为Unity bootstraper for ASP.NET MVC的NuGet软件包,专门针对ASP.NET MVC web应用程序,您尝试过吗?基本上,在安装之后,只需在App_Start文件夹下注册您想要注入到UnityConfig.cs中的内容,就可以了 例如:
public static void RegisterTypes(IUnityContainer container)
{
// NOTE: To load from web.config uncomment the line below. Make sure to add a Microsoft.Practices.Unity.Configuration to the using statements.
// container.LoadConfiguration();
// TODO: Register your types here
container.RegisterType<IAuthProvider, FormsAuthProvider>();
}
其中IAuthProvider是接口,FormsAuthProvider是实际实现似乎错误说明了一切:您必须将ISessionFactory绑定到一个实现:例如,您可以看看Thank You dude,我会检查它。
public static void RegisterTypes(IUnityContainer container)
{
// NOTE: To load from web.config uncomment the line below. Make sure to add a Microsoft.Practices.Unity.Configuration to the using statements.
// container.LoadConfiguration();
// TODO: Register your types here
container.RegisterType<IAuthProvider, FormsAuthProvider>();
}