2009-08-10 7 views
1

ASP.NETメンバーシッププロバイダを使用して、現在のサイトのすべてのメンバーシップアクティビティを処理しています。ASP.NETメンバーシップで新規ユーザーが作成されない

私は奇妙な問題に遭遇しました。ご存じのように、Asp.Netメンバーシップに精通していれば、データはProfileCommonに保存されます。

したがって、ProfileCommon.UserIdを実行してuserIDを取得できます。

これは、すべて私のプロダクションサーバー、ステージングサーバー、ローカルのdevサーバーの古いアカウントで正常に動作します。

ローカルのdevサーバーで新しいユーザーを作成すると、Profilecommonオブジェクトにデータが読み込まれていないため、ページがProfileCommon.UserIdを参照していてnullのため、例外がスローされてエラーが発生します。ユーザーは認証済みですが、ProfileCommonにデータが入力されていません。

これはなぜ起こっているのか、誰にでもアイデアや提案がありますか?

編集:ここに私のweb.configエントリがあります。 AspnetSqlProfileProviderを削除して追加する理由がわかりません。これは私が引き継いだサイトで、まだ100%asp.netメンバーシップに精通しているわけではありません。

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

実際のプロファイル情報;

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

ありがとう!

答えて

1

のようにプロパティを定義する何かを持っている必要があり、あなたもapplicationNameをダブルチェックすることをお勧めします。一致しない場合、またはアプリケーション名を一方のセクションで定義し、他方のセクションでは定義しない場合、問題が発生します。

<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

どこに設定すれば、私はweb.config内のどこにでもそのセットが表示されません –

+0

私の答えが更新されました。 –

2

web.configのProfileセクションは、Membershipセクションと同じconnectionStringName値を使用していますか?これが私がチェックする最初のことです。

編集:フルプロファイルの設定ブロックを投稿できますか?あなたはconnectionStringNameに加えて

<profile enabled="true"> 

    <properties> 

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

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

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

    </properties> 

</profile> 
+0

いいえ、同じ接続文字列です。非常に奇妙なことは、これがステージング/プロダクションでは動作しますが、ローカルでは動作しないことです。だから私はいつもプロダクトに何かを押し込むことを恐れている。なぜならこれはローカルでは動作しないからだ。タイムアウトの問題があるのだろうか? –

+0

よろしくお願いします。質問2.環境ごとに異なるweb.configを持っていますか?または、環境間を移動するときに同じweb.configファイルの接続文字列を編集するだけですか? – JamieGaines

+0

私はプロダクション/ステージング/ dev用に異なる接続文字列を持っていますが、web.configsとは異なります。 –

関連する問題