Ранее я задавал этот вопрос . Ответ на который привел к другому вопросу, подобному тому, что ты видишь перед собой.
Моя проблема в том, что у меня есть собственный MembershipProvider
, использующий AccountRepository
с использованием ObjectContext
. Поскольку MembershipProvider
является Singleton
в MVC (насколько я понимаю), AccountRepository
и его ObjectContext
должны быть введены один раз и оставаться там на оставшееся время жизни MembershipProvider
.
Однако в своих контроллерах я также использую репозитории с контекстами объектов. В этих контроллерах мне нужно, чтобы контекст объекта был разделен между репозиториями с помощью запроса. Имею такую привязку:
Bind().To().InRequestScope();
// put bindings here
Bind().To
и в Application_Start ()
kernel.Inject(Membership.Provider);
Проблема в том, что Ninject явно вызывает dispose в контексте объекта, когда думает, что запрос выполнен (я думаю, через 30 секунд).
Я заметил, что когда вы устанавливаете привязки, вы можете указать «при инъекции в». Проблема в том, что мне нужно "при вливании при вливании". То есть при внедрении контекста объекта в контроллер учетных записей при внедрении контроллера учетных записей в поставщика членства. И, похоже, у меня этого нет ...
MyMembershipProvider
в MVC. Просто передайте его (позади и интерфейс) контроллерам, которые в нем нуждаются, как я делаю с репозиториями. Затем Ninject будет создавать экземпляр провайдера для каждого запроса. Мне это не нравится, потому что я уверен, что у MVC есть причина для создания экземпляра поставщика членства как синглтона. kernel.Inject
снова в каждом событии. Повторная инициализация поставщика при каждом запросе почти эквивалентна повторному созданию экземпляра, за исключением более грязного. ИМХО, первый обходной путь - лучший. Тем не менее, я предпочитаю найти способ настроить Ninject для привязки так, как я хочу. cd "/ Users / c28 / Documents / Office Projects / Nice Saying123" setenv PATH "/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Developer/usr/bin:/...
CodeSign "build/Release-iphoneos/Nice Saying123.app"
cd "/Users/c28/Documents/Office Projects/Nice Saying123"
setenv PATH "/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
setenv _CODESIGN_ALLOCATE_ /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate
/usr/bin/codesign -f -s "iPhone Developer: dipak kasabwala (29QJU3WV6X)" "--resource-rules=/Users/c28/Documents/Office Projects/Nice Saying123/build/Release-iphoneos/Nice Saying123.app/ResourceRules.plist" --entitlements "/Users/c28/Documents/Office Projects/Nice Saying123/build/Nice Saying123.build/Release-iphoneos/Nice Saying123.build/Nice Saying123.xcent" "/Users/c28/Documents/Office Projects/Nice Saying123/build/Release-iphoneos/Nice Saying123.app"
/Users/c28/Documents/Office Projects/Nice Saying123/build/Release-iphoneos/Nice Saying123.app: replacing invalid existing signature
/Users/c28/Documents/Office Projects/Nice Saying123/build/Release-iphoneos/Nice Saying123.app: CSSMERR_TP_NOT_TRUSTED
Command /usr/bin/codesign failed with exit code 1