我对服务& amp;存储库模式,我已经使用Autofac IoC实现了它 我能正确使用普通控制器的模式,但是[授权]属性有问题 我在授权中使用自定义角色提供程序:以下是我的配置中的行:
<roleManager defaultProvider="CustomRoleProvider" enabled="true" cacheRolesInCookie="false">
<providers>
<clear />
<add name="CustomRoleProvider" type="PLC.MyRoleProvider" />
</providers>
</roleManager>
这是实现System.Web.Security.RoleProvider
类的MyRoleProvider类的片段:
public class MyRoleProvider : RoleProvider
{
ILoginService _loginService;
public MyRoleProvider(ILoginService loginService)
{
_loginService = loginService;
}
public override string[] GetRolesForUser(string userName)
{
var user = _loginService.FindBy(p => p.NAME == userName).FirstOrDefault();
string[] val = user.ACCESS.Split(',');
return val;
}
//. . . and some other methods
}
我的控制器:
[Authorize(Roles ="SuperAdmin,Admin")]
public class TestController
{
ILoginService _loginService;
MyRoleProvider _roleProvider;
public TestController(ILoginService loginService, MyRoleProvider roleProvider)
{
_loginService = loginService;
_roleProvider = roleProvider;
}
//. . .
Golbal.asax.cs:
builder.RegisterType<MyRoleProvider>().As<MyRoleProvider>().InstancePerRequest();
问题是它无法获取MyRoleProvider的构造函数,给出错误:
没有为此对象定义无参数构造函数 Error Line
如果我尝试添加无参数构造函数(显然不是这样),它将为_loginService
请建议我如何解决这个问题。
感谢。