繁体   English   中英

ASP.NET成员资格未填充新用户

[英]ASP.NET Membership not populating new users

我正在使用ASP.NET成员资格提供程序来处理当前站点上的所有成员资格活动。

我遇到了一个奇怪的问题。 如您所知,如果您熟悉Asp.Net成员身份,则数据将存储在ProfileCommon中。

因此,您可以执行ProfileCommon.UserId以获取用户ID。

所有这些在我的生产服务器,登台服务器以及本地开发服务器上的旧帐户上都可以正常工作。

但是,如果我在本地开发服务器上创建一个新用户,则不会填充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>

谢谢!

web.config中的“个人档案”部分是否使用与“成员资格”部分相同的connectionStringName值? 这是我要检查的第一件事。

编辑:您可以发布完整的配置文件配置块吗? 您应该有一些定义属性的内容,例如

<profile enabled="true">

    <properties>

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

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

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

    </properties>

</profile>

除了connectionStringName ,您可能还需要仔细检查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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM