2010-01-10 95 views
12

我完全不熟悉ASP.NET的成员/角色。这是我第一次使用它,并且我第一次尝试ASP.NET MVC。当我为MVC创建我的第一个项目时,它给了我一个可爱的模板来创建一个帐户。我很高兴看到我不必手动执行此操作。但是,它失败了,因为它无法连接到SQL Server。我没有SQL Server,我有MySQL。有没有简单的方法可以让我的系统使用MySQL,或者我将不得不创建自己的身份验证?用于MySQL的ASP.NET会员/角色提供者?

回答

19

明白了!使用的MySql Connector/Net 6.2.2.0版本,请按照下列步骤......

  • 添加参考MySql.Web.dll
  • 在web.config中更改<membership>这样:

    <membership defaultProvider="MySqlMembershipProvider"> 
        <providers> 
        <clear/> 
        <add name="MySqlMembershipProvider" 
         type="MySql.Web.Security.MySQLMembershipProvider, 
           MySql.Web, Version=6.2.2.0, Culture=neutral, 
           PublicKeyToken=c5687fc88969c44d" 
         autogenerateschema="true" 
         connectionStringName="NAME_OF_YOUR_CONN_STRING" 
         enablePasswordRetrieval="false" 
         enablePasswordReset="true" 
         requiresQuestionAndAnswer="false" 
         requiresUniqueEmail="false" 
         passwordFormat="Hashed" 
         maxInvalidPasswordAttempts="5" 
         minRequiredPasswordLength="6" 
         minRequiredNonalphanumericCharacters="0" 
         passwordAttemptWindow="10" 
         passwordStrengthRegularExpression="" 
         applicationName="/" 
        /> 
        </providers> 
    </membership>
  • 运行项目| ASP.NET配置工具和安全选项卡上单击测试
  • 测试在ASP.NET 3.5中,MySQL服务器5.1版中,Windows XP 64位
+0

谢谢。这是一个很大的帮助。不要错过添加defaultProvider! – Kildareflare 2013-03-31 23:16:30

-1

点击菜单Project,接着是ASP.NET Configuration。

这将在Data文件夹中为您创建sql数据库。

使用Visual Studio查看数据。

希望这会有所帮助。

编辑

我要补充一点,你就可以使用Ctrl + Alt + S看服务器资源管理器,然后这应该让你看到你的数据库有其表和数据。

您不应该需要安装SQL。

+0

我得到的工具终于来了(它比糖蜜慢),但我没有看到任何数据库。我去了安全标签,并试图选择一个数据存储。然后它给了我一个提供者列表,但只有一个(AspNetSqlProvider),但是这给了我同样的错误(无法连接到SQL服务器)。 – 2010-01-10 23:11:38

+0

在visual studio中,你现在可以看到aspnetdb.mdf文件了吗?它应该在App_Data文件夹中。确保你正在显示所有文件。 – griegs 2010-01-10 23:16:01

+1

编号MDF = SQL Server。我做*不*拥有SQL Server。 – 2010-01-10 23:39:18

2

原始问题没有指定使用哪个版本的ASP.NET & MVC。随着最近发布的.NET 4.5和MVC 4,我遇到了与OP相同的问题,但使用了新技术。这是我的quick fix for it大部分与Josh Stodola的答案相同的配置,但有一些额外的步骤。

<membership defaultProvider="MySqlMembershipProvider"> 
    <providers> 
    <clear /> 
    <add name="MySqlMembershipProvider" 
     type="MySql.Web.Security.MySQLMembershipProvider, 
     MySql.Web, Version=6.5.4.0, PublicKeyToken=c5687fc88969c44d" 
    autogenerateschema="true" 
    connectionStringName="*NAME_OF_YOUR_CONN_STRING*" 
    enablePasswordRetrieval="false" 
    enablePasswordReset="true" 
    requiresQuestionAndAnswer="false" 
    requiresUniqueEmail="false" 
    passwordFormat="Hashed" 
    maxInvalidPasswordAttempts="5" 
    minRequiredPasswordLength="6" 
    minRequiredNonalphanumericCharacters="0" 
    passwordAttemptWindow="10" 
    passwordStrengthRegularExpression="" 
    applicationName="/" /> 
    </providers> 
</membership> 

获取的AccountController和视图的工作:

  1. 删除MVC 4的AccountController,AccountModels,帐户查看文件夹和_LoginPartial共享视图
  2. 创建一个新的MVC 3 web应用
  3. 复制MVC 3 AccountController,AccountModels,帐户视图文件夹和_LogOnPartial共享视图进入您的MVC 4应用程序
  4. 替换@Html.Partial(“_LoginPartial”)与我共享_Layout视图@Html.Partial(“_LogOnPartial”)
0

在我的方案中,我不需要从我的.NET Web应用程序连接到MySQL。因此,我通过两件事来解决了这个问题:

1)卸载MySQL .NET Connector(所有版本) 2)在Web.Config文件中,删除在MySQL安装后添加的所有密钥。 (否则,安装前拷贝回原来的web.config文件,在.NET Web应用程序根目录)

现在,我的.NET应用程序是BAC