2016-12-09 2 views
2

Ich bin ein Neuling. Ich verwende SimpleMembership, um die Register- und Login-Tabellen zu generieren. Ich bekomme jedoch die folgende Ausnahme.Kann keine .net Datenanbieter Ausnahme bei der Implementierung von SimpleMembership

AUSNAHME

Eine Ausnahme des Typs 'System.ArgumentException' in System.Data.dll aufgetreten, wurde aber nicht in Benutzercode behandelt

Zusätzliche Informationen: Die angeforderte .Net Framework finden Datenanbieter. Es ist möglicherweise nicht installiert.

enter image description here

CODE

[AllowAnonymous] 
    [HttpGet] 
    public ActionResult Register1() 
    { 
     if (!WebSecurity.Initialized) 
     { 


      //WebSecurity.InitializeDatabaseConnection("My_Entities", "Users", "Id", "UserName", autoCreateTables: true); 
      WebSecurity.InitializeDatabaseConnection("My_Entities", "User", "Id", "Email", autoCreateTables: true); 
     } 
     return View("Register"); 
    } 
    [AllowAnonymous] 
    [HttpPost] 
    public ActionResult Register1(FormCollection form) 
    { 
     WebSecurity.CreateUserAndAccount(form["username"], form["password"], new { DisplayName = form["displayname"], Country = form["country"] }); 
     Response.Redirect("~/account/login"); 
     return View(); 
    } 

Web.config

<?xml version="1.0" encoding="utf-8"?> 
<!-- 
    For more information on how to configure your ASP.NET application, please visit 
    http://go.microsoft.com/fwlink/?LinkId=169433 
    --> 
<configuration> 
    <configSections> 
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> 
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> 
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> 
    </configSections> 
    <appSettings> 
    <add key="webpages:Version" value="3.0.0.0" /> 
    <add key="webpages:Enabled" value="false" /> 
    <add key="PreserveLoginUrl" value="true" /> 
    <add key="ClientValidationEnabled" value="true" /> 
    <add key="UnobtrusiveJavaScriptEnabled" value="true" /> 
    </appSettings> 

    <system.web> 
    <compilation debug="true" targetFramework="4.5" /> 
    <httpRuntime targetFramework="4.5" /> 
    <authentication mode="Forms"> 
     <forms loginUrl="~/Account/Login" timeout="2880" /> 
    </authentication> 
    <membership defaultProvider="p1"> 
     <providers> 
     <add name="p1" type="WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData" /> 
     </providers> 
    </membership> 
    <roleManager enabled="true"> 
     <providers> 
     <add name="p1" type="WebMatrix.WebData.SimpleRoleProvider, WebMatrix.WebData" /> 
     </providers> 
    </roleManager> 
    <pages> 
     <namespaces> 
     <add namespace="System.Web.Helpers" /> 
     <add namespace="System.Web.Mvc" /> 
     <add namespace="System.Web.Mvc.Ajax" /> 
     <add namespace="System.Web.Mvc.Html" /> 
     <add namespace="System.Web.Routing" /> 
     <add namespace="System.Web.WebPages" /> 
     </namespaces> 
    </pages> 
    </system.web> 
    <system.webServer> 
    <validation validateIntegratedModeConfiguration="false" /> 
    <handlers> 
     <remove name="ExtensionlessUrlHandler-Integrated-4.0" /> 
     <remove name="OPTIONSVerbHandler" /> 
     <remove name="TRACEVerbHandler" /> 
     <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" /> 
    </handlers> 
    </system.webServer> 
    <runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" /> 
     <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" /> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" /> 
     <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" /> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" /> 
     <bindingRedirect oldVersion="1.0.0.0-5.2.3.0" newVersion="5.2.3.0" /> 
     </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 
    <connectionStrings> 
    <add name="MY_Entities" connectionString="metadata=res://*/Models.DB.csdl|res://*/Models.DB.ssdl|res://*/Models.DB.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=MYCOMP\MYCOM;initial catalog=MY;persist security info=True;user id=sa;password=1*34;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" /> 

    </connectionStrings> 
    <entityFramework> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlCeConnectionFactory, EntityFramework"> 
     <parameters> 
     <parameter value="System.Data.SqlServerCe.4.0" /> 
     </parameters> 
    </defaultConnectionFactory> 
    <providers> 
     <provider invariantName="System.Data.SqlServerCe.4.0" type="System.Data.Entity.SqlServerCompact.SqlCeProviderServices, EntityFramework.SqlServerCompact" /> 
    </providers> 
    </entityFramework> 
</configuration> 
+0

Schauen Sie sich hier http://stackoverflow.com/questions/21797823/simple-membership-gives-me-unable-to -find-the-requested-net-Framework-Daten-prov # Antwort-21804341 –

+0

Ja, ich tat. Aber ich habe die Lösung nicht verstanden. Wenn Sie ein wenig ausarbeiten können. – Illep

+0

Sie müssen richtige SQL Server (und Entity Framework) Verbindungszeichenfolge (n) in 'web.config' Datei haben, wenn Sie' SimpleMembershipProvider' verwenden. Überprüfen Sie, ob der entsprechende Datenprovider ordnungsgemäß installiert wurde. –

Antwort

0

Die mitgelieferte web.config Datei gibt Vorhandensein von System.Data.SqlServerCe.4.0 als Entity Framework Datenprovider auf diesem Teil:

<entityFramework> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlCeConnectionFactory, EntityFramework"> 
     <parameters> 
      <parameter value="System.Data.SqlServerCe.4.0" /> 
     </parameters> 
    </defaultConnectionFactory> 
    <providers> 
     <provider invariantName="System.Data.SqlServerCe.4.0" type="System.Data.Entity.SqlServerCompact.SqlCeProviderServices, EntityFramework.SqlServerCompact" /> 
    </providers> 
</entityFramework> 

Da der Fehler klar gesagt, dass die Anbieter angeforderten Daten noch nicht installiert ist, finden Sie machine.config Datei in %Windows%\Microsoft.NET\Framework\[version number]\Config, bearbeiten Sie es in Admin-Berechtigungen, dann fügen Sie diese Zeilen unter (oder wenn Sie faul sind, machine.config zu graben, legen Sie sie in web.config unter system.data Element):

<system.data> 
    <DbProviderFactories> 
     <remove invariant="System.Data.SqlServerCe.4.0" /> 
     <add name="Microsoft SQL Server Compact Data Provider 4.0" invariant="System.Data.SqlServerCe.4.0" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" /> 
    </DbProviderFactories> 
</system.data> 

Entfernen Sie auch ein einzelnes abschließendes Element von <DbProviderFactories />, wenn Sie sie gefunden.

Als nächst Sie können Verweise im Zusammenhang mit SQL Server CE (sqlce*.dll) unter Verwendung von Package Manager-Konsole von der Suche nach EntityFramework.SqlServerCompact Paket (siehe this one) und installieren Sie es auf Ihrer Lösung hinzugefügt wird. Ändern Sie außerdem den Provider-Namen System.Data.SqlClient zu System.Data.SqlServerCe.4.0 in EF (und SQL Server) Verbindungszeichenfolge bei Bedarf.

Referenzen:

Unable to find the requested .Net Framework Data Provider

Unable to find the requested .Net Framework Data Provider. It may not be installed.

Unable to find the requested .Net Framework Data Provider. It may not be installed. - when following mvc3 asp.net tutorial

0

Bitte versuchen Sie die folgenden configure Einstellungen in Ihrer web.config hinzufügen.

<system.data> 
<DbProviderFactories> 
    <remove invariant="System.Data.SqlServerCe.4.0" /> 
    <add name="Microsoft SQL Server Compact Data Provider 4.0" invariant="System.Data.SqlServerCe.4.0" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.1, Culture=neutral, PublicKeyToken=89845dcd8080cc91" /> 
</DbProviderFactories> 

Verwandte Themen