我正在尝试在我的MVC3项目中创建自定义RoleProvider。我的RoleProvider定义如下:
public class MyRoleProvider : System.Web.Security.RoleProvider
{
private IAccountService _accountService;
public MyRoleProvider()
{
_accountService = DependencyResolver.Current.GetService<IAccountService>();
}
//...
}
正如您所看到的,我正在尝试使用DependencyResolver来获取绑定服务。我的绑定在我的App_Start中完成:
private static IKernel CreateKernel()
{
var kernel = new StandardKernel();
kernel.Bind<Func<IKernel>>().ToMethod(ctx => () => new Bootstrapper().Kernel);
kernel.Bind<IHttpModule>().To<HttpApplicationInitializationHttpModule>();
RegisterServices(kernel);
return kernel;
}
private static void RegisterServices(IKernel kernel)
{
// Add data and infrastructure modules
var modules = new List<INinjectModule>
{
new ConfigModule(),
new LoggingModule(),
new RepositoryModule(),
new ServiceModule()
};
kernel.Load(modules);
}
ServiceModule是我在做实际绑定的地方:
public class ServiceModule : NinjectModule
{
public override void Load()
{
Kernel.Bind<ICoreService>().To<CoreService>();
Kernel.Bind<IAccountService>().To<AccountService>();
}
}
我的问题是,当我调试网站时,我收到配置错误:
配置错误
描述:处理为此请求提供服务所需的配置文件时发生错误。请查看下面的具体错误详细信息并相应地修改配置文件。
分析器错误消息:调用目标已抛出异常。
来源错误:
Line 45: <roleManager>
Line 46: <providers>
Line 47: <clear />
Line 48: <add name="MyRoleProvider" type="Project.Web.Ui.Helpers.MyRoleProvider, Project.Web.Ui" connectionStringName="MyConnection" />
Line 49: </providers>
Line 50: </roleManager>
如果我在我的角色提供者构造函数上放置一个断点:
_accountService = DependencyResolver.Current.GetService();
我在App_Start Dependency Injector上放置一个断点:
var kernel = new StandardKernel();
_accountService断点首先命中,但如果我尝试跳过或介入,它就会爆炸。有关我可能做错了什么的想法,或者有任何关于找出更深入挖掘方法的想法?
编辑:我假设原因是因为我的Dependency Injector没有将我的服务绑定到接口而且DependencyResolver不知道绑定。