我正在尝试通过多个角色授权每个控制器类,以下是步骤
1.
<system.web>
<compilation debug="true" targetFramework="4.5.2" />
<httpRuntime enableVersionHeader="false" />
<customErrors mode="Off"/>
<sessionState cookieless="false" timeout="120"/>
<authentication mode="Forms">
<forms loginUrl="/Home/Index">
</forms>
</authentication>
<membership defaultProvider="MyMembership">
<providers>
<clear />
<add name="MyMembership" type="BLL.MyMembership" />
</providers>
</membership>
<roleManager enabled="true" defaultProvider="MyRoleProvider">
<providers>
<clear />
<add name="MyRoleProvider" type="BLL.MyRoleProvider" />
</providers>
</roleManager>
</system.web>
namespace BLL
{
public class MyRoleProvider: RoleProvider
{
myDbEntities AppDB;
public MyRoleProvider()
{
AppDB = new myDbEntities();
}
public override string[] GetRolesForUser(string username)
{
string[] roleID = { AppDB.Logins.Where(x => x.Username == Username).FirstOrDefault().rID.ToString()};
return roleID;
}
}
using System.Web.Mvc;
namespace BLL
{
[Authorize(Roles = "1,2")]
public class DashboardController : Controller
{
}
}
我无法理解我错在哪里,主要是获得成功,很少遇到问题: "
<块引用>InnerException {连接没有关闭。连接的 当前状态正在连接。"} System.Exception {System.InvalidOperationException} 传输级错误有 向服务器发送请求时发生。 (提供者:会话 提供程序,错误:19 - 物理连接不可用)
在获得 RoleIds 查询后,我尝试使用以下代码。
using System.Data.SqlClient;
SqlConnection.ClearAllPools();