我正在创建一个自定义成员资格提供程序类库,它为我的 Web 项目定义了一个数据提供程序接口来实现。
我在创建实现接口的类的实例时遇到问题。
我在 web.config 中添加了一行来提取数据提供者类型,但它正在成员库中寻找该类型(但它在我的 Web 项目中定义)。
public class MvcRoleProvider : RoleProvider
{
public string ConnectionString { get; set; }
private IDataProvider _dataProvider;
public override void Initialize(string name, NameValueCollection config)
{
var dataProviderType = config["dataProviderType"];
ConnectionString = ConfigurationManager.AppSettings[config["connectionStringName"]];
if (!string.IsNullOrEmpty(dataProviderType))
{
var type = Type.GetType(dataProviderType, true, true);
if (type != null && !string.IsNullOrEmpty(ConnectionString))
_dataProvider = (IDataProvider)Activator.CreateInstance(type, ConnectionString);
}
}
网页配置
<roleManager enabled="true" defaultProvider="WebTestRoleProvider">
<providers>
<clear />
<add name="WebTestRoleProvider"
applicationName="WebTest"
type="MvcMembership.MvcRoleProvider, MvcMembership"
dataProviderType="MyWebNameSpace.MyWebProject.DataProviderClassName"
connectionStringName="TheConnectionStringName" />
</providers>
</roleManager>
错误:
Parser Error Message: Could not load type 'MyWebNameSpace.MyWebProject.DataProviderClassName' from assembly 'MvcMembership, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'.
我对此采取了正确的方法吗?如果我想要通用的自定义会员库,我不应该在我的网络/数据项目中实现适当的数据提供者(在这个例子中,我在网络中制作一个用于测试)?