Этот трассировки стека происходит в результате ошибки, которая гласит: «Имя поставщика не может быть нулевым или пустым .»Проблема с пользовательской роли поставщика
[ArgumentException:. Имя поставщика не может быть пустым или пустой] системы. Web.Security.Roles.Initialize() +2230205 System.Web.Security.RoleManagerModule.OnLeave (источник объекта, EventArgs eventArgs) +68 System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +148 System.Web.HttpApplication.ExecuteStep (шаг IExecutionStep, Boolean & завершен синхронно) +75
По существу я создаю свой собственный поставщик роли, который наследует класс SqlRoleProvider, я вызываю инициализацию успешно и подтвердил, что он успешно делает все в моем коде, но что-то в .Net явно не инициализируется, как «Роли», объект, который я не могу наследовать, вызывает у меня некоторые головные боли ...
любые идеи?
Ok мое решение наслаивается это означает, что мне нужно, чтобы обеспечить безопасность через бизнес-объектов тоже ... для того, чтобы сделать это, я определить следующее:
--- EDIT 1 ---
Мой код:
В основном блоке:
public class C20RoleProvider : RoleProvider
{
private C20SqlRoleDataProvider prov;
C20RoleProvider()
{
// this code is actually using some reflection based on config files
// i have simplified this to illustrate the problem im having ...
prov = new C20SqlRoleDataProvider();
}
public override void Initialize(string name, NameValueCollection config)
{
prov.Initialize(name, config);
}
}
При сборке поставщика:
public class C20SqlRoleDataProvider : SqlRoleProvider
{
// code omitted
}
В этот момент я ожидаю, что смогу использовать все, что определяет базовый класс «RoleProvider», делая вызовы на prov. ...
Я пропустил дополнительный код, но в основном все методы, которые отмечены абстрактом от класса RoleProvider в классе «C20RoleProvider».
Я знаю, что это выглядит немного странно, но то, что я хочу сделать, - это отдельная бизнес-логика от сбора данных в провайдере, причем поставщик данных - это что-то (через мой код отражения), который может использовать класс бизнес-логики «C20RoleProvider» в бизнес-среде, не опасаясь что-либо сломать и разрешить замену исходных источников (например, данные о роли могут поступать из любого места).
Здесь многое происходит, но по существу весь слой среды приложения/бизнес-объекта использует поставщиков таким образом, чтобы «предоставлять» данные для основной бизнес-логики из любого источника.
Где мой код? – willvv 2010-12-10 10:07:02
Добавлено, извините wilvv :) Есть намного больше, но я не хочу усложнять свой вопрос, добавляя материал, который не является проблемой. – War 2010-12-10 12:14:49