2010-03-25 16 views
27

¿Es posible configurar ASP.NET MVC 2 para trabajar con una base de datos MySQL?¿Cómo configuro ASP.NET MVC 2 con MySQL?

+3

Blogging está perfectamente bien y se describe en las preguntas frecuentes, sin embargo, debe hacer su pregunta en la pregunta y luego publicar su respuesta como respuesta. Esto le permite a las personas +/- su respuesta y publicar sus propias respuestas también. –

+0

Buena publicación. Yo diría que esto se aplica a cualquier aplicación asp.net, no solo a ASP.NET MVC. – Craig

+0

Tome mi edición, tome todo después de la primera línea y publíquelo como respuesta y luego elimínelo de la pregunta. Además, no lo hagas simplemente porque no ha descubierto el enfoque de blogging en SO, muchos novatos piensan que está en contra de las reglas. Lo resolverá –

Respuesta

36

Supongo que tiene Visual Studio Professional 2008, tiene acceso a una instancia de servidor MySQL y tiene una experiencia de desarrollo de moderada a avanzada. Esto PUEDE funcionar con la edición web VS2008, pero no del todo seguro.

  1. Si no está, instale MySQL Connector for .NET (6.2.2.0 en el momento de este reportaje)
  2. Opcional: Instalar MySQL GUI Tools
  3. Si no está, instale MVC 2 RTM, o mejor aún, usa el Web Platform Installer de Microsoft. (ACTUALIZACIÓN: MVC 2 ahora se ha lanzado durante bastante tiempo)
  4. Crea una base de datos MySQL vacía. Si no desea acceder a su aplicación con la cuenta de usuario raíz de MySQL (insegura), cree una cuenta de usuario y asigne los privilegios apropiados (fuera del alcance de este informe).
  5. Crear una nueva aplicación MVC 2 en Visual Studio
  6. En la aplicación MVC 2, haga referencia a MySql.Web.dll. Estará en su GAC, o en la carpeta que el instalador de MySQL Connector lo puso.
  7. Modificar la parte de las cadenas de conexión de su 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.

    Modificar la parte de miembros de su 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.

    Modifique la parte del administrador de roles de su 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.

    Modificar la porción perfil de su 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> 
    

En este punto, usted debería ser capaz de ejecutar la aplicación y tienen el defecto ASP La página de inicio de .NET MVC 2 aparece en su navegador. Sin embargo, puede ser una mejor idea ejecutar primero la herramienta de configuración web de ASP.NET (en los menús superiores de Visual Studio: Proyecto -> Configuración de ASP.NET). Una vez que la herramienta se inicia, revisa cada una de las pestañas; sin errores = todo bien

La herramienta de configuración en Nathan Bridgewater's blog fue esencial para que esto funcione. Kudos, Nathan. Busque el encabezado "Herramienta de configuración" en la mitad de la página.

El token de clave pública en MySql.web.dll que he publicado aquí no debería cambiar pronto. Pero en caso de que sospeche que una cadena de token incorrecta copie y pegue, o lo que sea, simplemente use la línea de comando de Visual Studio para ejecutar: "sn -T [Path \ to \ your.dll]" para obtener el token de clave pública correcto.

Ahí lo tienes, ASP.NET MVC 2 corriendo sobre MySQL. ¡Aclamaciones!

+1

Gracias NovaJoe! Recientemente, he copiado esta herramienta en su propia página para que sea más fácil de encontrar. http://www.integratedwebsystems.com/tools-source/ – Nathan

+0

¡Noice! Y gracias a TI, mi amigo. Fue una batalla cuesta arriba y tu herramienta lo hizo posible. Nathan por la victoria! – NovaJoe

+2

¡Impresionante! ¡Creo que crearé una cuenta nueva en StackOverflow para votar nuevamente! ;) –

1

Creo en "10. Modifique la parte del perfil de su web.config ::"

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

type = tiene que ser: type = "MySql.Web.Profile.MySQLProfileProvider"

porque en "MySql.Web.Security" No he encontrado ningún método MySQLProfileProvider. (pero utilizando la versión 6.4.4. para .NET 4.0)

Y por lo menos, usted tiene que crear sus propias clases para crear las tablas de base de datos, si no hay una base de datos configurada listo. Harald

+0

Buena nota. Gracias HL1234. No estoy verificando esto, pero también puede haber sido un error tipográfico. Sin embargo, tal vez sean los espacios de nombres los que hayan cambiado. No es seguro. – NovaJoe

+1

Necesitaba hacer este cambio para que funcione. – AverageMarcus

Cuestiones relacionadas