自定义RoleProvider(继承自SqlRoleProvider)的问题
代码如下:
public class RoleProcess:SqlRoleProvider
{
public override void Initialize(string name, System.Collections.Specialized.NameValueCollection config)
{
if (config == null)
{
throw new ArgumentNullException( "config ");
}
if (string.IsNullOrEmpty(name))
{
throw new ArgumentNullException( "name ");
}
//璋冪敤鍩虹被
base.Initialize(name, config);
}
public override bool IsUserInRole(string username, string roleName)
{
if (base.IsUserInRole(username, roleName))
{
return true;
}
}
}
web.config如下(摘了部分)
<roleManager enabled= "true " defaultProvider= "customProvider ">
<providers>
<remove name= "AspNetSqlRoleProvider "/>
<add connectionStringName= "netSql " applicationName= "/ " name= "customProvider " type= "RoleProcess "/>
</providers>
</roleManager>
我写了段测试程序,来调用自定义RoleProcess提供的IsUserInRole,但是报异常了
异常提示如下:
用户代码未处理 System.NullReferenceException
Message= "未将对象引用设置到对象的实例。 "
Source= "System.Web "
StackTrace:
在 System.Web.DataAccess.SqlConnectionHelper.GetConnection(String connectionString, Boolean revertImpersonation)
在 System.Web.Security.SqlRoleProvider.IsUserInRole(String username, String roleName)
在 RoleProcess.IsUserInRole(String username, String roleName) 位置 e:\cmd\App_Code\RoleProcess.cs:行号 58
在 set_Default.Button1_Click(Object sender, EventArgs e) 位置 e:\cmd\set\Default.aspx.cs:行号 22
在 System.Web.UI.WebControls.Button.OnClick(EventArgs e)
在 System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument)
在 System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
在 System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
在 System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
在 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
我猜是连接不到后台库?后台是sqlserver库,我用默认的sqlRoleProvider是没问题的,请教,谢谢!
[解决办法]
mark
[解决办法]
JF UP