我正在使用ASP.NET成员资格提供程序来处理当前站点上的所有成员资格活动。
我遇到了一个奇怪的问题。如您所知,如果您熟悉Asp.Net成员资格,那么数据将存储在ProfileCommon中。
因此,您可以执行ProfileCommon.UserId来获取userID。
这一切在我的生产服务器、中间服务器和本地开发服务器上的旧帐户上都工作得很好。
但是,如果我在本地开发服务器上创建一个新用户,Profilecommon对象不会被填充,并且会抛出错误,因为页面引用了ProfileCommon.UserId,并且它为空,因此抛出了异常。用户已通过身份验证,但未填充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>谢谢!
发布于 2009-08-10 21:53:32
除了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>发布于 2009-08-10 20:30:07
web.config中的配置文件部分是否使用与成员资格部分相同的connectionStringName值?这是我要检查的第一件事。
编辑:您可以发布完整的个人资料配置块吗?您应该有一些定义属性的东西,比如
<profile enabled="true">
<properties>
<add name="UserId" type="Int32"/>
<add name="Gender" type="string"/>
<add name="Age" type="Int32"/>
</properties>
</profile>https://stackoverflow.com/questions/1256979
复制相似问题