无属性Profile不生成Profile.UserName
我们在大多数时候使用Profile都是用来认证和记录个人信息,原来的项目中我也曾在基础结构中使用了ASP.NET Profile功能用来进行验证和承载个人信息。最近下一个项目开始做一些调查工作,结果配置的Profile怎么也出不来UserName,这令我很奇怪,原来问题在于如果配置节点中不指定Profile的属性就不会在认证前后获得用户名等信息。示例如下:
<profile defaultProvider="MyProfileProvider">
<providers>
<add name="MyProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="LocalSqlServer"/>
</providers>
<properties>
<add name="Name" allowAnonymous="true" defaultValue="??"/>
</properties>
</profile>
<providers>
<add name="MyProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="LocalSqlServer"/>
</providers>
<properties>
<add name="Name" allowAnonymous="true" defaultValue="??"/>
</properties>
</profile>
以上配置后,认证前用户名为ab1ade46-00c9-4182-a03a-b6478daff149(未认证用户);输入用户名密码获得认证登录用户的用户名。
而如果不指定属性节点(<add name="Name" ... />),则认证前后用户名均为空。但ASP.NET还是把用户名存在了别的地方,因为LoginName控件在后者的情况下仍能表示出用户名。
posted on 2009-03-18 21:53 Kyle Tsuei 阅读(403) 评论(0) 收藏 举报
浙公网安备 33010602011771号