我正在设置我的MVC4网站,以便使用数据存储为SQL Server Express 11.0.21xx的SqlMembershipProvider
我已经通过NuGet安装了通用提供程序
PM > Install-Package Microsoft.AspNet.Providers
当我运行应用程序并转到localhost/Accounts/Register并提交表单时,我收到以下错误
To call this method, the "Membership.Provider" property must be an instance of "ExtendedMembershipProvider".
在这条线上
WebSecurity.CreateUserAndAccount(model.UserName, model.Password);
Accounts控制器设置了[InitializeSimpleMembership]属性。但是由于上述错误,没有创建这些表。
由NuGet更新的web.config部分
<profile defaultProvider="DefaultProfileProvider">
`<providers>` `<add name="DefaultProfileProvider" type="System.Web.Providers.DefaultProfileProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" applicationName="/" />` `</providers>` `</profile>` `<membership defaultProvider="DefaultMembershipProvider">` `<providers>` `<add name="DefaultMembershipProvider" type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"` `connectionStringName="DefaultConnection"` `enablePasswordRetrieval="false"` `enablePasswordReset="true"` `requiresQuestionAndAnswer="false"` `requiresUniqueEmail="false"` `maxInvalidPasswordAttempts="5"` `minRequiredPasswordLength="6"` `minRequiredNonalphanumericCharacters="0"` `passwordAttemptWindow="10"` `applicationName="/" />` `</providers>` `</membership>` `<roleManager enabled="true" defaultProvider="DefaultRoleProvider">` `<providers>` `<add name="DefaultRoleProvider"` `type="System.Web.Providers.DefaultRoleProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" applicationName="/" />` `</providers>` `</roleManager>` `<sessionState mode="InProc" customProvider="DefaultSessionProvider">` `<providers>` `<add name="DefaultSessionProvider" type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" />` `</providers>` `</sessionState>` ConnectionString
<add name="DefaultConnection" connectionString="server=servername\instance;Database=imdb;User Id=sa; Password=passbird;" providerName="System.Data.SqlClient" />
问题出在哪里?我应该使用通用的提供者吗?我不认为我应该运行aspnet_regsql,因为新的帐户控制器。
发布于 2013-04-19 07:41:48
我所要做的就是在web.config中将DefaultMembershipProvider更改为SimpleMembershipProvider。类型的属性对于正确处理非常重要。
<membership defaultProvider="DefaultMembershipProvider">
<providers>
<add name="DefaultMembershipProvider"
type="WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData"
connectionStringName="DefaultConnection"
enablePasswordRetrieval="false"
enablePasswordReset="true"
requiresQuestionAndAnswer="false"
requiresUniqueEmail="false"
maxInvalidPasswordAttempts="5"
minRequiredPasswordLength="6"
minRequiredNonalphanumericCharacters="0"
passwordAttemptWindow="10"
applicationName="/" />
</providers>
</membership>
<roleManager enabled="true" defaultProvider="DefaultRoleProvider">
<providers>
<add name="DefaultRoleProvider"
type="WebMatrix.WebData.SimpleRoleProvider, WebMatrix.WebData"
connectionStringName="DefaultConnection"
applicationName="/" />
</providers>
</roleManager>https://stackoverflow.com/questions/16079258
复制相似问题