27

是否可以设置 ASP.NET MVC 2 以使用 MySQL 数据库?

4

2 回答 2

36

我假设您拥有 Visual Studio Professional 2008,可以访问 MySQL 服务器实例,并且具有中等到高级的开发经验。这可能适用于 VS2008 Web 版,但完全不确定。

  1. 如果还没有,请安装MySQL Connector for .NET(撰写本文时为 6.2.2.0)
  2. 可选:安装MySQL GUI 工具
  3. 如果还没有,请安装MVC 2 RTM,或者更好的是,使用 Microsoft 的Web Platform Installer。(更新: MVC 2 现在已经发布了很长一段时间)
  4. 创建一个空的 MySQL 数据库。如果您不想使用 MySQL root 用户帐户(不安全)访问您的应用程序,请创建一个用户帐户并分配适当的权限(超出本文的范围)。
  5. 在 Visual Studio 中创建新的 MVC 2 应用程序
  6. 在 MVC 2 应用程序中,引用 MySql.Web.dll。它要么在您的 GAC 中,要么在 MySQL 连接器安装程序放置的文件夹中。
  7. 修改 web.config 的连接字符串部分:

      <connectionStrings> 
        <remove name="LocalMySqlServer"/> 
        <add name="MySqlMembershipConnection"
             connectionString="Data Source=[MySql server host name];
                               userid=[user];
                               password=[password];
                               database=[database name];" 
             providerName="MySql.Data.MySqlClient"/>
      </connectionStrings>
    

    8.

    修改 web.config 的成员资格部分:

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

    9.

    修改 web.config 的角色管理器部分:

      <roleManager enabled="true" defaultProvider="MySqlRoleProvider">  
        <providers>  
          <clear />  
          <add connectionStringName="MySqlMembershipConnection"  
               applicationName="/"  
               name="MySqlRoleProvider"  
               type="MySql.Web.Security.MySQLRoleProvider, MySql.Web, 
                     Version=6.2.2.0, Culture=neutral, 
                     PublicKeyToken=c5687fc88969c44d"  
               autogenerateschema="true"/>  
        </providers>  
      </roleManager>
    

    10.

    修改 web.config 的配置文件部分:

      <profile>  
        <providers>  
          <clear/>  
          <add type="MySql.Web.Security.MySQLProfileProvider, MySql.Web, 
                     Version=6.2.2.0, Culture=neutral, 
                     PublicKeyToken=c5687fc88969c44d"  
               name="MySqlProfileProvider"  
               applicationName="/"  
               connectionStringName="MySqlMembershipConnection"  
               autogenerateschema="true"/>  
        </providers>  
      </profile>
    

此时,您应该能够运行应用程序并在浏览器中显示默认的 ASP.NET MVC 2 主页。但是,最好先运行 ASP.NET Web 配置工具(在 Visual Studio 顶部菜单中:项目 -> ASP.NET 配置)。工具启动后,检查每个选项卡;没有错误=一切都好。

Nathan Bridgewater 博客中的配置工具对于使其正常工作至关重要。荣誉,内森。在页面下方查找“配置工具”标题。

我在这里发布的 MySql.web.dll 上的公钥令牌不应该很快改变。但是,如果您怀疑复制和粘贴错误的令牌字符串或其他原因,只需使用 Visual Studio 命令行运行:“sn -T [Path\to\your.dll]”以获得正确的公钥令牌。

有了它,在 MySQL 上运行的 ASP.NET MVC 2。干杯!

于 2010-03-25T18:28:26.010 回答
1

我相信“10。修改 web.config:: 的配置文件部分”

<profile>
  <providers>         
    <clear />   ...
      <add type="MySql.Web.Security.MySQLProfileProvider,......

type= 必须是: type="MySql.Web.Profile.MySQLProfileProvider"

因为在“MySql.Web.Security”中我没有找到任何方法 MySQLProfileProvider。(但对于 .NET 4.0 使用版本 6.4.4。)

至少,如果没有准备好配置的数据库,您必须创建自己的类来创建数据库表。哈拉尔

于 2011-11-02T21:04:28.733 回答