2009-08-10 10 views
1

Ich verwende den ASP.NET-Mitgliedschaftsanbieter, um alle Mitgliedschaftsaktivitäten auf meiner aktuellen Website zu verwalten.ASP.NET-Mitgliedschaft füllt keine neuen Benutzer

Ich habe in ein seltsames Problem gerannt. Wie Sie wissen, sind die Daten in ProfileCommon gespeichert, wenn Sie mit der Asp.Net-Mitgliedschaft vertraut sind.

So können Sie ProfileCommon.UserId tun, um die Benutzer-ID zu erhalten.

Das alles funktioniert gut auf meinem Produktionsserver, meinem Staging-Server und für alte Konten auf meinem lokalen Dev-Server.

Wenn ich jedoch einen neuen Benutzer auf meinem lokalen Dev-Server anlege, wird das Profilecommon-Objekt nicht gefüllt und es werden Fehler ausgegeben, da Seiten beispielsweise auf ProfileCommon.UserId verweisen und null ist, wodurch eine Ausnahme ausgelöst wird. Der Benutzer ist authentifiziert, aber ProfileCommon wird nicht ausgefüllt.

Hat jemand irgendwelche Ideen/Vorschläge, warum dies passieren könnte?

Edit: hier ist mein web.config Eintrag. Ich bin mir nicht sicher, warum wir AspnetSqlProfileProvider entfernen und dann hinzufügen. Dies ist eine Seite, die ich übernommen habe und ich bin noch nicht 100% -ig mit der asp.net-Mitgliedschaft vertraut.

<profile defaultProvider="AspNetSqlProfileProvider"> 
    <providers> 
    <remove name="AspNetSqlProfileProvider"/> 
    <add name="AspNetSqlProfileProvider" 
     type="System.Web.Profile.SqlProfileProvider" 
     connectionStringName="ConnectionString"/> 
</providers> 

Aktuelle Profilinfo;

 <profile defaultProvider="SqlProfileProvider"> 
     <providers> 
      <remove name="AspNetSqlProfileProvider"/> 
      <add name="SqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="FiftyMillionDBConnection"/> 
     </providers> 
     <properties> 
      <add name="FirstName" type="String" serializeAs="String"/> 
      <add name="LastName" type="String" serializeAs="String"/> 
      <add name="EmailAddress" type="String" serializeAs="String"/> 
      <add name="ScreenName" type="String" serializeAs="String"/> 
      <add name="BirthDay" type="DateTime" serializeAs="String"/> 
      <group name="Address"> 
       <add name="AddressLine1" type="String" serializeAs="String"/> 
       <add name="AddressLine2" type="String" serializeAs="String"/> 
       <add name="City" type="String" serializeAs="String"/> 
       <add name="State" type="String" serializeAs="String"/> 
       <add name="Zip" type="String" serializeAs="String"/> 
      </group> 
      <group name="PersonalInfo"> 
       <add name="Gender" type="String" serializeAs="String"/> 
       <add name="Height" type="String" serializeAs="String"/> 
      </group> 
      <group name="OtherInfo"> 
       <add name="Agent" type="String" serializeAs="String"/> 
       <add name="Employee" type="String" serializeAs="String"/> 
       <add name="Source" type="String" serializeAs="String"/> 
       <add name="EventRegistration" type="String" serializeAs="String"/> 
      </group> 
      <group name="AuthInfo"> 
       <add name="GUID" type="String" serializeAs="String"/> 
       <add name="RegSource" type="String" serializeAs="String"/> 
       <add name="ReceiveMail" type="String" serializeAs="String"/> 
      </group> 
     </properties> 
    </profile> 

Vielen Dank!

Antwort

1

Neben dem connectionStringName definiert haben, können Sie auch applicationName nochmals zu überprüfen. Wenn sie nicht übereinstimmen oder Sie den Anwendungsnamen in einem Abschnitt und nicht im anderen definieren, treten Probleme auf.

<membership defaultProvider="SqlProvider"> 
     <providers> 
     <add name="SqlProvider" 
      type="..." 
      connectionStringName="SomeConnString" 
      applicationName="SomeApp" 
      ... 
      ... /> 
     </providers> 
    </membership> 

    <profile defaultProvider="ProfileProvider"> 
    <providers> 
     <clear /> 
     <add name="ProfileProvider" 
      type="..." 
      applicationName="SomeApp"/> 
    </providers> 
    <properties> 
     ... 
    </properties> 
    </profile> 
+0

Wo würde das eingestellt werden, sehe ich das nirgendwo in meiner web.config –

+0

Aktualisiert meine Antwort. –

2

Ist der Profilabschnitt in web.config mit dem gleichen connectionStringName-Wert wie der Membership-Abschnitt? Das ist das erste, was ich überprüfen würde.

Edit: Können Sie Ihren vollständigen Profilkonfigurationsblock posten? Sie sollten etwas haben, das die Eigenschaften wie

<profile enabled="true"> 

    <properties> 

     <add name="UserId" type="Int32"/> 

     <add name="Gender" type="string"/> 

     <add name="Age" type="Int32"/> 

    </properties> 

</profile> 
+0

Yup, gleiche Connectionstring. Das Seltsame ist, dass das auf Staging/Production funktioniert, aber nicht lokal. Deshalb habe ich immer Angst, etwas in die Produktion zu schieben, da dies lokal nicht funktioniert. Ich frage mich, ob es ein Timeout-Problem ist? –

+0

Okay. Frage 2. Haben Sie für jede Umgebung eine andere web.config? Oder bearbeiten Sie einfach die Verbindungszeichenfolgen für dieselbe web.config-Datei, wenn Sie zwischen den Umgebungen wechseln? – JamieGaines

+0

Ich habe verschiedene Verbindungszeichenfolgen für Produktion/Staging/dev aber nicht verschiedene web.configs. –

Verwandte Themen