ASP.Net уже предоставляет статический экземпляр текущего поставщика членства через статический членство класса и его статический Provider свойства. Связывание, вероятно, будет в вашем методе Application_Start и выглядеть примерно так:
Bind<MembershipProvider>()
.ToMethod(ctx => Membership.Provider);
Опять же, потому что Memberhip.Provider является статическим, это вроде как одноточечного уже, так что поведение вы пытаетесь применить не имеет большого значения.
Не указывая какого-либо поведения в приведенном выше фрагменте, Ninject по умолчанию будет иметь переходное поведение. В этом виде привязки я полагаю, что это будет означать вызов лямбды, которая возвращает Членство. Проводник каждый раз, когда ему необходимо ввести ЧленствоProvider.
Я предполагаю, что может быть аргументом для явного указания одноплодной поведение как Ninject, скорее всего, «кэш» значение, возвращаемое лямбда в первый раз ему нужно придать MembershipProvider, в силу экономии накладных расходов выполнив лямбда. Я не уверен на 100%, так как Ninject будет работать в этой ситуации, но, похоже, это разумно.
Все, что сказал, мое личное предпочтение было бы использовать OnePerRequestBehavior, таким образом, я знаю, что Ninject будет вызывать мою лямбду один раз для каждого запроса. Не уверен, что это необходимо, но мне нравится идея получить провайдера от Membership.Provider после каждого запроса, так как я полагаю, вы не можете делать предположения о том, как и когда Memberhip.Provider get's set, хотя вы, вероятно, можете узнать если вы достаточно копаете Reflector.
Bind<MembershipProvider>()
.ToMethod(ctx => Membership.Provider)
.Using<OnePerRequestBehavior>();
Удачи. Извините, ваш вопрос сидел здесь так долго!
См. Также: http://stackoverflow.com/questions/2753424 –