2009-08-10 9 views
1

J'utilise le fournisseur d'adhésion ASP.NET pour gérer toutes les activités d'adhésion sur mon site actuel.L'adhésion ASP.NET ne remplit pas les nouveaux utilisateurs

J'ai rencontré un problème étrange. Comme vous le savez, si vous connaissez l'appartenance à Asp.Net, les données sont stockées dans ProfileCommon.

Donc, vous pouvez faire ProfileCommon.UserId pour obtenir l'ID utilisateur.

Tout cela fonctionne très bien sur mon serveur de production, mon serveur de transfert et pour les anciens comptes sur mon serveur de développement local.

Cependant, si je crée un nouvel utilisateur sur mon serveur de développement local, l'objet Profilecommon n'est pas rempli et il génère des erreurs car les pages référencent ProfileCommon.UserId par exemple et sont nulles, générant ainsi une exception. L'utilisateur est authentifié, mais ProfileCommon n'est pas renseigné.

Est-ce que quelqu'un a des idées/suggestions sur les raisons pour lesquelles cela pourrait se produire?

Modifier: voici mon entrée web.config. Je ne sais pas pourquoi nous supprimons AspnetSqlProfileProvider, puis l'ajoutons. C'est un site que j'ai repris et je ne suis pas encore familier avec l'adhésion à asp.net.

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

Informations de profil réelles;

 <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> 

Merci!

Répondre

1

En plus du connectionStringName, vous pouvez également revérifier applicationName. Si elles ne correspondent pas ou si vous définissez le nom de l'application dans une section et pas dans l'autre, vous rencontrerez des problèmes.

<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

Où cela serait-il, je ne vois pas cet ensemble dans mon web.config –

+0

Mis à jour ma réponse. –

2

La section Profil de web.config utilise-t-elle la même valeur connectionStringName que la section Membership? C'est la première chose que je vérifierais.

Editer: Pouvez-vous poster votre bloc de configuration complet? Vous devriez avoir quelque chose qui définit les propriétés comme

<profile enabled="true"> 

    <properties> 

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

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

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

    </properties> 

</profile> 
+0

Yup, même chaîne de connexion. La chose la plus étrange est que cela fonctionne sur Staging/Production mais pas localement. J'ai donc toujours peur de pousser n'importe quoi à la production puisque cela ne fonctionne pas localement. Je me demande si c'est un problème de délai d'attente? –

+0

Okay. Question 2. Avez-vous un web.config différent pour chaque environnement? Ou modifiez-vous simplement les chaînes de connexion pour le même fichier web.config lorsque vous vous déplacez d'un environnement à l'autre? – JamieGaines

+0

J'ai différentes chaînes de connexion pour production/staging/dev mais pas différentes web.configs. –

Questions connexes