首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法配置MVC 4 SqlMembershipProvider

无法配置MVC 4 SqlMembershipProvider
EN

Stack Overflow用户
提问于 2013-04-18 17:29:08
回答 1查看 2.9K关注 0票数 0

我正在设置我的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">

代码语言:javascript
复制
   `<providers>`
代码语言:javascript
复制
     `<add name="DefaultProfileProvider"               type="System.Web.Providers.DefaultProfileProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"               connectionStringName="DefaultConnection"               applicationName="/" />`
代码语言:javascript
复制
   `</providers>`
代码语言:javascript
复制
 `</profile>`
代码语言:javascript
复制
 `<membership defaultProvider="DefaultMembershipProvider">`
代码语言:javascript
复制
   `<providers>`
代码语言:javascript
复制
     `<add name="DefaultMembershipProvider"               type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"`
代码语言:javascript
复制
          `connectionStringName="DefaultConnection"`
代码语言:javascript
复制
          `enablePasswordRetrieval="false"`
代码语言:javascript
复制
          `enablePasswordReset="true"`
代码语言:javascript
复制
          `requiresQuestionAndAnswer="false"`
代码语言:javascript
复制
          `requiresUniqueEmail="false"`
代码语言:javascript
复制
          `maxInvalidPasswordAttempts="5"`
代码语言:javascript
复制
          `minRequiredPasswordLength="6"`
代码语言:javascript
复制
          `minRequiredNonalphanumericCharacters="0"`
代码语言:javascript
复制
          `passwordAttemptWindow="10"`
代码语言:javascript
复制
          `applicationName="/" />`
代码语言:javascript
复制
   `</providers>`
代码语言:javascript
复制
 `</membership>`
代码语言:javascript
复制
 `<roleManager enabled="true" defaultProvider="DefaultRoleProvider">`
代码语言:javascript
复制
   `<providers>`
代码语言:javascript
复制
     `<add name="DefaultRoleProvider"`
代码语言:javascript
复制
          `type="System.Web.Providers.DefaultRoleProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"               connectionStringName="DefaultConnection"               applicationName="/" />`
代码语言:javascript
复制
   `</providers>`
代码语言:javascript
复制
 `</roleManager>`
代码语言:javascript
复制
 `<sessionState mode="InProc" customProvider="DefaultSessionProvider">`
代码语言:javascript
复制
   `<providers>`
代码语言:javascript
复制
     `<add name="DefaultSessionProvider"               type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"               connectionStringName="DefaultConnection" />`
代码语言:javascript
复制
   `</providers>`
代码语言:javascript
复制
 `</sessionState>` 

ConnectionString

<add name="DefaultConnection" connectionString="server=servername\instance;Database=imdb;User Id=sa; Password=passbird;" providerName="System.Data.SqlClient" />

问题出在哪里?我应该使用通用的提供者吗?我不认为我应该运行aspnet_regsql,因为新的帐户控制器。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-19 07:41:48

我所要做的就是在web.config中将DefaultMembershipProvider更改为SimpleMembershipProvider。类型的属性对于正确处理非常重要。

代码语言:javascript
复制
<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>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16079258

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档