2010-03-25 22 views
27

是否可以設置ASP.NET MVC 2與MySQL數據庫一起使用?如何設置ASP.NET MVC 2與MySQL?

+3

博客是完美的,並在FAQ中概述,但是,您需要在問題中提出您的問題,然後將答案發布爲答案。這允許人們+/-您的答案,併發布自己的答案。 – 2010-03-25 03:16:39

+0

好帖子。我會說這適用於任何asp.net應用程序,而不僅僅是ASP.NET MVC。 – Craig 2010-03-25 03:18:19

+0

接受我的編輯,將第一行後的所有內容都作爲答案發布,然後將其從問題中刪除。另外,不要因爲他沒有想出在SO上寫博客的方法,很多新手都認爲它違反了規則。他會想出來的 – 2010-03-25 03:24:18

回答

36

我假設你有Visual Studio Professional 2008,可以訪問MySQL服務器的實例,並且具有中等到高級的開發體驗。這可能會與VS2008 Web版一起工作,但不能確定。

  1. 如果你還沒有,(在這寫的時候6.2.2.0)安裝MySQL Connector for .NET
  2. 可選:安裝MySQL GUI Tools
  3. 如果你還沒有,安裝MVC 2 RTM,或者更好,使用微軟的Web Platform Installer。 (更新: MVC 2現已發佈相當一段時間)
  4. 創建一個空的MySQL數據庫。如果您不想使用MySQL root用戶帳戶(不安全)訪問您的應用程序,請創建一個用戶帳戶並分配適當的權限(超出本文的範圍)。
  5. 在Visual Studio中創建一個新的MVC 2應用程序
  6. 在MVC 2應用程序中,引用MySql.Web.dll。它將位於您的GAC中,或位於MySQL Connector安裝程序所在的文件夾中。
  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> 
    

    修改你的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頂級菜單中:Project - > ASP.NET Configuration)。工具啓動後,檢查每個選項卡;沒有錯誤=都很好。

配置工具Nathan Bridgewater's blog是實現此功能的關鍵。榮譽,內森。在頁面下半部分找到「配置工具」標題。

我在這裏發佈的MySql.web.dll上的公鑰標記應該不會很快改變。但是,如果您懷疑複製和粘貼等不良標記字符串,只需使用Visual Studio命令行運行:「sn -T [Path \ to \ your.dll]」以獲取正確的公鑰標記。

你有它,運行在MySQL上的ASP.NET MVC 2。乾杯!

+1

感謝NovaJoe!我最近將這個工具複製到了自己的頁面上,以便於查找。 http://www.integratedwebsystems.com/tools-source/ – Nathan 2010-04-15 19:20:07

+0

Noice!感謝你,我的朋友。這是一場艱苦的戰鬥,你的工具使它成爲可能。彌敦道勝利! – NovaJoe 2010-04-17 19:03:13

+2

太棒了!我想我會在StackOverflow上創建一個新賬戶,再次投票給你! ;) – 2011-02-02 20:39:19

1

我相信在「10.修改您的網站的個人資料部分。配置::」

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

類型=必須是: 類型= 「MySql.Web.Profile.MySQLProfileProvider」

因爲在 「MySql.Web.Security」 我還沒有發現任何方法MySQLProfileProvider。 (但使用版本6.4.4。對於.NET 4.0)

而且至少,你必須創建自己的類來創建數據庫表,如果沒有準備好配置的數據庫。 哈拉爾

+0

好注意。謝謝HL1234。我沒有檢查這個,但它也可能是一個錯字。但是,也許這是命名空間已經改變了。不確定。 – NovaJoe 2011-11-03 18:23:31

+1

我需要進行此更改才能使其正常工作。 – AverageMarcus 2012-08-15 13:39:50