代码之家  ›  专栏  ›  技术社区  ›  Jack Marchetti

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

  •  1
  • Jack Marchetti  · 技术社区  · 16 年前

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

    我遇到了一个奇怪的问题。如您所知,如果您熟悉ASP.NET成员资格,则数据存储在profilecommon中。

    所以您可以通过profilecommon.userid来获取用户ID。

    这在我的生产服务器、临时服务器和本地dev服务器上的旧帐户上都可以正常工作。

    但是,如果我在本地dev服务器上创建一个新用户,则不会填充profilecommon对象,并且会引发错误,因为页面引用profilecommon.userid,例如,它为空,因此引发异常。用户已通过身份验证,但未填充profilecommon。

    有人对这可能发生的原因有什么想法/建议吗?

    编辑:这是我的web.config条目。我不知道我们为什么删除aspnetsqlprofileprovider然后添加它。这是我接手的一个网站,我还不完全熟悉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>
    

    谢谢您!

    2 回复  |  直到 16 年前
        1
  •  1
  •   Jon    16 年前

    除了 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>
    
        2
  •  2
  •   JamieGaines    16 年前

    web.config中的profile节是否使用与membership节相同的connectionStringName值?这是我要检查的第一件事。

    编辑:你能发布完整的配置文件块吗?您应该有一些定义属性的东西,比如

    <profile enabled="true">
    
        <properties>
    
            <add name="UserId" type="Int32"/>
    
            <add name="Gender" type="string"/>
    
            <add name="Age" type="Int32"/>
    
        </properties>
    
    </profile>
    
    推荐文章