Я использую новых универсальных провайдеров ASP.NET, как описано в этом комментарии к сообщению в блоге Hanselman :
Я могу подключить его для аутентификации, используя следующее:
<profile defaultProvider="DefaultProfileProvider" >
<providers>
<add name="DefaultProfileProvider" type="System.Web.Providers.DefaultProfileProvider1" connectionStringName="DefaultConnection" applicationName="/"/>
</providers>
</profile>
<membership defaultProvider="DefaultMembershipProvider">
<providers>
<add name="DefaultMembershipProvider" type="System.Web.Providers.DefaultMembershipProvider" connectionStringName="DefaultConnection" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" />
</providers>
</membership>
<roleManager defaultProvider="DefaultRoleProvider">
<providers>
<add name="DefaultRoleProvider" type="System.Web.Providers.DefaultRoleProvider" connectionStringName="DefaultConnection" applicationName="/" />
</providers>
</roleManager>
Затем я пытаюсь создать нового пользователя, используя следующий код
object akey = System.Guid.NewGuid();
MembershipCreateStatus status;
var member = new System.Web.Providers.DefaultMembershipProvider();
member.CreateUser("New User", "password","newUser@newuser.com","First Pet","Rover",true,akey,out status)
Я получаю ошибку с этой трассировкой стека:
Ссылка на объект не установлена для экземпляра объекта в System.Web.Providers.Entities.ModelHelper.CreateEntityConnection (параметр ConnectionStringSettings, String csdl, String ssdl, String msl) в System.Web.Providers.Entities.ModelHelper.CntetS (установка) в System.Web.Providers.DefaultMembershipProvider.Membership_CreateUser (строковое имя приложения, строковое имя пользователя, строковый пароль, строковая соль, строковая электронная почта, строковое значение passwordQuestion, строковое значение passwordAnswer, логическое значение isApproved, DateTime & createDate, логический объект уникального типа UserEeyEser3232), строковый пароль, ответ на запрос, строковый парольSystem.Web.Providers.DefaultMembershipProvider.CreateUser (строковое имя пользователя, строковый пароль, строковое электронное письмо, строковое passwordQuestion, строковое passwordAnswer, логическое значение isApproved, object providerUserKey, MembershipCreateStatus & status)
Я полагаю, что для проверки подлинности соединения с базой данных должно быть достаточноработает.Что я делаю не так?
Только что заметил, что для свойства Application члена по-прежнему установлено значение Null.Ожидал бы, что это будет "/", если он читает его из конфигурации.Может быть, это не чтение конфигурации.
Просто обнаружил, что, если я добавлю следующее, это будет работать:
config.Add("connectionStringName", "DefaultConnection");
member.Initialize("DefaultMembershipProvider",config);
Но я бы подумал, что оно должно забрать его из файла конфигурации.