2016-11-28 1 views
1

Ich versuche, AP.Net-Mitgliedschaft zu meiner Datenbank hinzuzufügen. Ich hatte in der Vergangenheit Erfolg damit, also habe ich eine Vorstellung davon, was ich mache. Mein Projekt ist eine VB.Net-Website mit Framework 4.5.2. Ich habe asp_regsql.exe in Framework 4 verwendet, um das Schema zu meiner Datenbank hinzuzufügen. Ich habe die folgenden web.config Einträge (pro MSDN-Artikel):Fehler bei ASP.Net-Mitgliedschaft CREATE DATABASE ist fehlgeschlagen. Einige der aufgeführten Dateinamen konnten nicht erstellt werden. Überprüfen Sie die zugehörigen Fehler

<connectionStrings> 
<add name="AFKMSConnectionString" providerName="System.Data.SqlClient" connectionString="working as intended" />  

<system.web> 
<authentication mode="Forms" > 
    <forms loginUrl="Account/Login.aspx" 
    name=".ASPXFORMSAUTH" /> 
</authentication> 
<!--<authorization> 
    <deny users="?" /> 
</authorization>--> 
<compilation debug="true" targetFramework="4.5.2"/> 
<httpRuntime targetFramework="4.5.2"/> 
<pages> 
    <namespaces> 
    <add namespace="System.Web.Optimization"/> 
    <add namespace="Microsoft.AspNet.Identity"/> 
    </namespaces> 
    <controls> 
    <add assembly="Microsoft.AspNet.Web.Optimization.WebForms" namespace="Microsoft.AspNet.Web.Optimization.WebForms" tagPrefix="webopt"/> 
    </controls> 
</pages> 
<membership defaultProvider="SqlMembershipProvider" userIsOnlineTimeWindow="15"> 
    <providers> 
    <clear/> 
    <add 
    name="SqlMembershipProvider" 
    type="System.Web.Security.SqlMembershipProvider" 
    connectionStringName="AFKMSConnectionString" 
    applicationName="AFKMS" 
    enablePasswordRetrieval="false" 
    enablePasswordReset="true" 
    requiresQuestionAndAnswer="false" 
    requiresUniqueEmail="true" 
    passwordFormat="Hashed" /> 
    </providers> 
</membership> 
<profile enabled ="true" defaultProvider="SqlProvider"> 
    <providers> 
    <clear /> 
    <add name="SqlProvider" 
     type="System.Web.Profile.SqlProfileProvider" 
     connectionStringName="AFKMSConnectionString" 
     applicationName="AFKMS" 
     description="SqlProfileProvider for SampleApplication" /> 
    </providers> 
</profile> 
<roleManager enabled ="true" 
      defaultProvider ="SqlRoleProvider" > 
    <providers> 
    <clear/> 
    <add name ="SqlRoleProvider" 
     type="System.Web.Security.SqlRoleProvider" 
     connectionStringName="AFKMSConnectionString" 
     applicationName="AFKMS"/> 

    </providers> 
</roleManager> 

Meine Verbindungszeichenfolge funktioniert für meine aktuellen Funktionen, aber wenn ich versuche, um einen Benutzer registrieren ich die folgende Fehlermeldung erhalten:

Directory lookup for the file "C:\Users\Dan\Source\Repos\AFKMS\AFKMS\App_Data\aspnet-AFKMS-140073d4-6858-4f19-9555-0edfbaadd43a.mdf" failed with the operating system error 2(The system cannot find the file specified.). CREATE DATABASE failed. Some file names listed could not be created. Check related errors.

Das kommt von Konten/Register,

Dim result = manager.C reate (user, Password.Text)

Warum versucht es eine Datenbank zu erstellen? Wie sieht es aus, dass ich vermisse?

+0

Sie haben keine Verbindungszeichenfolge in Ihrer 'web.config'. Die Konfigurationsabschnitte der Mitgliedschafts- und Rollenanbieter beziehen sich auf eine Verbindungszeichenfolge, sie ist jedoch nicht vorhanden. @ Ahmeds Antwort ist richtig. –

+0

Ich habe die Verbindungszeichenfolge für mein Zitat weggelassen. Es funktioniert für alle anderen Anwendungsfunktionen, die ich derzeit habe. –

+0

Ich denke, der Standard für eine ASP.Net 4.5.2-Anwendung ist wahrscheinlich Identity Framework 2.0, nicht das ältere Membership Framework, daher der Grund, warum es Ihre Verbindungszeichenfolgen nicht verwendet. –

Antwort

2
<connectionStrings> 
<add name="AFKMSConnectionString" connectionString="data source=.;Initial Catalog=your_db_name;integrated security=True" providerName="System.Data.SqlClient" /> 
</connectionStrings> 

Können Sie uns einen Code zur Verfügung stellen, wie Sie Benutzer erstellen? Sie erwähnt: Dim result = manager.Create (user, Password.Text) Ich glaube, Sie verwenden müssen:

Membership.CreateUser(UserName, Password, Email) 
+0

Es ist der standardmäßig bereitgestellte Code auf der Registrierungsseite in asp.net 4.5.2. –

1

Ich gehe davon aus Sie eine neue ASP.NET-Webanwendung erstellt haben, mit der Webformularvorlagen?

In diesem Fall scheinen Sie versucht zu haben, das neuere ASP.NET Identity System mit den ursprünglichen Konfigurationseinstellungen des Mitgliedschaftsanbieters zu konfigurieren.

Als Ahmed vermerkt, erwähnen Sie den Anruf in der Registrierungsseite zu manager.Create(user, Password.Text) - dies verwendet den ApplicationUserManager von ASP.NET Identity.

Wenn man sich in der App_Start Ordner Ihres Projekts, sollten Sie eine Datei IdentityConfig.vb Namen finden (vorausgesetzt, Sie verwenden VB.NET), die eine Methode hat Create, die die ApplicationUserManager zurück - das ruft wiederum die Klasse ApplicationDbContext auf, die im Ordner Models erstellt wurde, der für die Verwendung einer Verbindung namens "DefaultConnection" definiert wird. Standardmäßig ist dies eine eigenständige .mdf-Datei im Ordner App_Data, die nach dem Projekt benannt ist.

Sie sollten dies an Ihrer Verbindungszeichenfolge ändern, aber beachten Sie, dass dies Entity Framework verwendet, um das Datenbankschema für Sie zu erstellen - es sollte es nur zur vorhandenen Datenbank hinzufügen, aber Sie sollten sicherstellen, dass Sie es gesichert haben bevor du anfängst, falls alles vorher fallen sollte.

+0

Ich sehe weder einen App_Start-Ordner, noch finde ich eine IdentityConfig.vb-Datei. Ich werde den Link zur ASP.NET Identity-Site, die Sie verlinkt haben, durchgehen und nachsehen, ob ich etwas Anwendbares finden kann. –

+0

Um ehrlich zu sein, ich habe nicht die VB Templates installiert, so ging es durch meine C# Templates - Sie sollten in der Lage sein, das Projekt nach der Klasse zu suchen, die 'Manager' ist eine Art von und folgen Sie von dort - haben Sie eine Modellordner? –

+0

Ich verwende keine MVC, ich verwende Webforms. Ich fand einen anderen Verweis auf defaultconnection und änderte es, sah aber keine Verbesserung –

Verwandte Themen