2015-01-15 13 views
8

Possiedo un progetto API Web ASP.NET MVC 4 che utilizza Entity Framework 6.1.1 e MySQL 6.9.5.0. Quando chiamo/api/account/Registrazione utilizzando DHC, il codice si rompe aInnerException: tabella 'xxx.aspnetusers' inesistente

IdentityResult result = await UserManager.CreateAsync(user, model.Password); 

nel AccountController ed ottengo un InnerException che dice

Table 'xxx.aspnetusers' doesn't exist 

Ecco pezzi del mio web.config

<connectionStrings> 
<add name="ClockitDb" connectionString="Data Source=ClockitDb;port=3306;Initial Catalog=ClockitDb;Server=localhost;user id=root;password=m916600026;" 
    providerName="MySql.Data.MySqlClient" /> 
</connectionStrings> 

<!-- Some code--> 

<entityFramework codeConfigurationType="MySql.Data.Entity.MySqlEFConfiguration, MySql.Data.Entity.EF6"> 
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework"/> 
<providers> 
    <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" /> 
    <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> 
</providers> 
</entityFramework> 

<!-- Some code--> 

<system.web> 

<authentication mode="Forms" /> 
<compilation debug="true" targetFramework="4.5" /> 
<httpRuntime targetFramework="4.5" /> 
<membership defaultProvider="MySQLMembershipProvider"> 
    <providers> 
    <remove name="MySQLMembershipProvider" /> 
    <add name="MySQLMembershipProvider" type="MySql.Web.Security.MySQLMembershipProvider, MySql.Web, Version=6.9.5.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" connectionStringName="LocalMySqlServer" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="true" applicationName="/" requiresUniqueEmail="false" passwordFormat="Clear" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="7" minRequiredNonalphanumericCharacters="1" passwordAttemptWindow="10" passwordStrengthRegularExpression="" /> 
    </providers> 
</membership> 
<profile defaultProvider="MySQLProfileProvider"> 
    <providers> 
    <remove name="MySQLProfileProvider" /> 
    <add name="MySQLProfileProvider" type="MySql.Web.Profile.MySQLProfileProvider, MySql.Web, Version=6.9.5.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" connectionStringName="LocalMySqlServer" applicationName="/" /> 
    </providers> 
</profile> 
<roleManager defaultProvider="MySQLRoleProvider"> 
    <providers> 
    <remove name="MySQLRoleProvider" /> 
    <add name="MySQLRoleProvider" type="MySql.Web.Security.MySQLRoleProvider, MySql.Web, Version=6.9.5.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" connectionStringName="LocalMySqlServer" applicationName="/" /> 
    </providers> 
</roleManager> 
<siteMap defaultProvider="MySqlSiteMapProvider"> 
    <providers> 
    <remove name="MySqlSiteMapProvider" /> 
    <add name="MySqlSiteMapProvider" type="MySql.Web.SiteMap.MySqlSiteMapProvider, MySql.Web, Version=6.9.5.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" connectionStringName="LocalMySqlServer" applicationName="/" /> 
    </providers> 
</siteMap> 
<webParts> 

<personalization defaultProvider="MySQLPersonalizationProvider"> 
    <providers> 
     <remove name="MySQLPersonalizationProvider" /> 
     <add name="MySQLPersonalizationProvider" type="MySql.Web.Personalization.MySqlPersonalizationProvider, MySql.Web, Version=6.9.5.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" connectionStringName="LocalMySqlServer" applicationName="/" /> 
    </providers> 
    </personalization> 
</webParts> 

<entityFramework codeConfigurationType="MySql.Data.Entity.MySqlEFConfiguration, MySql.Data.Entity.EF6"> 
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" /> 
<providers> 
    <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" /> 
    <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> 
</providers> 

+1

Avete creato tabelle e stored proc per l'infrastruttura di identità nel vostro database MySQL? – tvanfosson

+2

Le seguenti tabelle vengono generate automaticamente con SQL non appena viene richiamata l'API per la prima volta. AspNetRoles, AspNetUserClaims, AspNetLogins, AspNetRoles, AspNetUsers. Non dovrebbe essere lo stesso anche con MySQL? –

+0

Penso che sia ancora necessario usare 'InitializeSimpleMembershipAttribute' e forse fare qualche altra configurazione. Vedere http://dev.mysql.com/doc/connector-net/en/connector-net-simple-membership-tutorial-creating.html – tvanfosson

risposta

1

L'eccezione indica chiaramente che aspnetusers non è presente nel database. Tuttavia, su ulteriori risultati, penso che ti piacerebbe passare attraverso questa risposta dal forum di asp.net.

http://forums.asp.net/t/1977214.aspx?Mvc+5+Identity+Error+Invalid+object+name+dbo+AspNetUsers

per il ruolo, provider di appartenenze, asp.net [intero stack asp.net/WebAPI inclusa] con MySQL, è necessario disporre che i fornitori di specifiche per mysql sul posto. Per questo, puoi fare riferimento a http://www.codeproject.com/Articles/117157/Setting-up-MySql-Membership-with-Visual-Studio

Fammi sapere se questo risolve il tuo problema.

-1

ho provato seguendo le istruzioni sul

http://www.codeproject.com/Articles/117157/Setting-up-MySql-Membership-with-Visual-Studio.

Quando lancio la scheda di sicurezza in ASP strumento di amministrazione sito web, ottengo un errore che dice

The pre-application start initialization method Start on type WebMatrix.WebData.PreApplicationStartCode threw an exception with the following error message: Could not load file or assembly 'MySql.Data, Version=6.9.5.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) (C:\Users\Jaseem Abbas\Documents\Visual Studio 2013\Projects\MySQLSample1\MySQLSample1\web.config line 33). 

La mia linea 33 in Web config inizia come

<membership defaultProvider="MySQLMembershipProvider"> 
    <providers> 
    <add name="MySQLMembershipProvider" 
     type="MySql.Web.Security.MySQLMembershipProvider, 
     MySql.Web, Version=6.9.5.0, 
     Culture=neutral, 
     PublicKeyToken=c5687fc88969c44d" 
     connectionStringName="LocalMySqlServer" 
     enablePasswordRetrieval="false" 
     enablePasswordReset="true" 
     requiresQuestionAndAnswer="false" 
     requiresUniqueEmail="true" 
     passwordFormat="Hashed" 
     maxInvalidPasswordAttempts="5" 
     minRequiredPasswordLength="6" 
     minRequiredNonalphanumericCharacters="0" 
     passwordAttemptWindow="10" 
     applicationName="/" 
     autogenerateschema="true" /> 
    </providers> 
</membership> 
<profile>ASP 
    <providers> 
    <clear /> 
    <add type="MySql.Web.Security.MySQLProfileProvider, 
     MySql.Web, Version=6.9.5.0, 
     Culture=neutral, 
     PublicKeyToken=c5687fc88969c44d" 
     name="MySqlProfileProvider" 
     applicationName="/" 
     connectionStringName="LocalMySqlServer" 
     autogenerateschema="true" /> 
    </providers> 
</profile> 
<roleManager enabled="true" defaultProvider="MySqlRoleProvider"> 
    <providers> 
    <clear /> 
    <add connectionStringName="LocalMySqlServer" 
     applicationName="/" 
     name="MySqlRoleProvider" 
     type="MySql.Web.Security.MySQLRoleProvider, 
     MySql.Web, Version=6.9.5.0, 
     Culture=neutral, 
     PublicKeyToken=c5687fc88969c44d" 
     autogenerateschema="true" /> 
    </providers> 
+0

Si prega di verificare se si dispone dell'assembly "MySql.Data" nella cartella di riferimento o ora . Se è presente, controlla la versione e prova ad abbinarla alla versione web.config. Spero che questo ti aiuti. – ATechieThought

3

Ho avuto esattamente lo stesso problema. Ho seguito il seguente tutorial e ha funzionato How to set up application using ASP.NET Identity with MySQL Provider

E 'importante seguire tutti i passi del tutorial, anche la messa a punto di migrazione, altrimenti si dà lo stesso errore.

+0

Ci proveremo! –

+1

Viene eseguito ma le tabelle di appartenenza e profilo non vengono create. – Quan

Problemi correlati