я нашел http://www.devproconnections.com/content1/catpath/database-development/topic/a-perfect-storm-linq-to-sql-dependency-injection-and-asp-net-providers/page/2 и имел похожий код как с веб-страницы:Есть ли лучший способ использовать Structuremap для ввода зависимостей в пользовательский RoleProvider?
public class CustomProvider : MembershipProvider, IMembershipProvider
{
private IUserRepository _userRepo;
// this .ctor is used via unit tests (as a seam)
public CustomProvider(IUserRepository repo)
{
this._userRepo = repo;
}
// requisite parameter-less constructor:
public CustomProvider()
{
// do NOTHING here
}
public override bool ValidateUser(string username, string password)
{
// HACK:
IUserRepository repo = this._userRepo ?? ObjectFactory.GetInstance<IUserRepository>();
SiteUser user = repo.GetUserByEmailAddress(username.ToLower());
if (user == null)
return false;
if (!user.Active || !user.Verified)
return false;
if (user.PassPhrase.IsNullOrEmpty())
return false;
// do other verification... etc
}
}
Кроме шахты является обычай RoleProvider. Вызывает ли ObjectFactory.GetInstance приемлемый способ встраивания зависимостей в RoleProvider? Я попытался настроить свойство, чтобы ввести зависимость, но я не мог заставить это работать. Я уверен, что мой реестр StructureMap ошибочен. Но трудно найти правильный путь, когда документация устарела.
Итак, для приложения ASP.NET MVC3 вызывает ObjectFactory ok в пользовательском RoleProvider? Или я должен попытаться ввести свойство?
Если недвижимость, как? У меня есть For<RoleProvider>().Use(ctx => Roles.Provider);
. Но я не уверен, что Use должен быть Add, и я не уверен в синтаксисе, чтобы вложить зависимость в свойство.
все еще нужна помощь У меня ужасное время, пытаясь сделать miniprofiler не бросайте Null исключения реф, когда я просто переместить StructureMap ObjectFactory свойству для инициализации. Цель состоит в том, чтобы позволить кешировать роли. Я получаю ту же ошибку, что и эти вопросы mini-profiler nullreferenceexceptionHelp Configure mvc mini profiler with Linq to Sql
Я обновил до последнего MVCMiniProfiler и попробовал его MVC-пакет. Кажется, что профилирование не включено до того, как пользовательский RoleProvider инициализируется или свойства инициализируются. Если я установил поле прямо из переопределенного метода GetRolesForUser, все будет в порядке. Если я сделаю это поле защитником общедоступной собственности, я получаю исключения NULL в ProfiledDbCommand. Зачем?
У меня есть. Странно перемещая объект ObjectFactory.GetInstance в свойство и проверяя нулевое значение, выдает MvcMiniProfiler. Не знаю, почему. Но похоже, что это может иметь какое-то отношение к порядку вещей, которые инициализируются, потому что это пустое исключение. Не имеет ничего общего с StructureMap. – nportelli