2010-03-25 25 views
27

È possibile configurare ASP.NET MVC 2 per lavorare con un database MySQL?Come configurare ASP.NET MVC 2 con MySQL?

+3

Il blogging funziona perfettamente e viene descritto nelle domande frequenti, tuttavia è necessario porre la domanda nella domanda e pubblicare la risposta come risposta. Ciò consente alle persone di +/- la tua risposta e di pubblicare anche le proprie risposte. –

+0

Buon post. Direi che questo vale per qualsiasi app asp.net, non solo per ASP.NET MVC. – Craig

+0

Prendere la mia modifica, prendere tutto dopo la prima riga e postarla come risposta e quindi eliminarla dalla domanda. Inoltre, non lo fai solo perché non ha capito l'approccio al blogging su SO, molti dei neofiti pensano che sia contro le regole. Lo scoprirà –

risposta

36

Suppongo che Visual Studio Professional 2008, abbia accesso a un'istanza del server MySQL e abbia un'esperienza di sviluppo da moderata ad avanzata. Questo MAGGIO funziona con edizione Web VS2008, ma non del tutto sicuro.

  1. Se non lo avete, installare MySQL Connector for .NET (6.2.2.0, al momento di questa scrittura-up)
  2. Facoltativo: installare MySQL GUI Tools
  3. Se non lo avete, installare MVC 2 RTM, o meglio ancora, utilizzare Microsoft Web Platform Installer. (UPDATE: MVC 2 è stato rilasciato per un po 'di tempo)
  4. Creare un database MySQL vuoto. Se non si desidera accedere alla propria applicazione con l'account utente root MySQL (non sicuro), creare un account utente e assegnare i privilegi appropriati (al di fuori dell'ambito di questo articolo).
  5. Creare una nuova applicazione MVC 2 in Visual Studio
  6. Nell'app MVC 2, fare riferimento a MySql.Web.dll. Sarà nel tuo GAC, o nella cartella che l'installer di MySQL Connector ha messo.
  7. Modificare la porzione di stringhe di connessione del vostro 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.

    Modificare la parte dei membri del 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.

    Modifica la parte del gestore di ruolo del tuo 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.

    Modificare la porzione di profilo del vostro 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> 
    

A questo punto, si dovrebbe essere in grado di eseguire l'applicazione e hanno il difetto ASP La home page di .NET MVC 2 viene visualizzata nel browser. Tuttavia, potrebbe essere una buona idea eseguire prima lo Strumento di configurazione Web ASP.NET (nei menu principali di Visual Studio: Progetto -> Configurazione ASP.NET). Una volta avviato lo strumento, controlla ognuna delle schede; nessun errore = tutto bene.

Lo strumento di configurazione Nathan Bridgewater's blog era essenziale per ottenere questo funzionamento. Complimenti, Nathan. Cerca lo strumento "Strumento di configurazione" a metà della pagina.

Il token di chiave pubblica sul MySql.web.dll che ho postato qui non dovrebbe cambiare in qualunque momento presto. Ma nel caso in cui si sospetti una stringa di token errata da copia e incolla o qualsiasi altra cosa, basta usare la riga di comando di Visual Studio per eseguire: "sn -T [Path \ to \ your.dll]" per ottenere il token di chiave pubblica corretto.

In questo caso, ASP.NET MVC 2 è in esecuzione su MySQL. Saluti!

+1

Grazie NovaJoe! Ho recentemente copiato questo strumento sulla sua pagina per renderlo più facile da trovare. http://www.integratedwebsystems.com/tools-source/ – Nathan

+0

Noice! E grazie a TE, amico mio. È stata una battaglia in salita e il tuo strumento lo ha reso possibile. Nathan per la vittoria! – NovaJoe

+2

Fantastico! Penso che creerò un nuovo account su StackOverflow per votare di nuovo! ;) –

1

Credo in "10. Modifica la parte del profilo del tuo sito web.config ::"

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

type = deve essere: type = "MySql.Web.Profile.MySQLProfileProvider"

perché in "MySql.Web.Security" non ho trovato alcun metodo MySQLProfileProvider. (ma usando la versione 6.4.4. per NET 4.0)

E almeno, è necessario creare le proprie classi per creare le tabelle del database, se non esiste un database configurato pronto. Harald

+0

Buona nota. Grazie HL1234. Non sto verificando questo, ma potrebbe essere stato un errore di battitura pure. Tuttavia, forse sono gli spazi dei nomi che sono cambiati. Non sono sicuro. – NovaJoe

+1

Avevo bisogno di fare questa modifica per farlo funzionare. – AverageMarcus

Problemi correlati