使用ASP.NET成员资格,如果我想获取当前用户的信息,我可以调用
因此,系统必须以某种方式知道当前用户的ID。
如果我的理解是正确的,并且我只需要当前用户的ID,那么有没有一种方法可以在不返回数据库中所有用户信息的情况下获取它?
我知道我可以使用
MembershipUser.GetUser()
。因此,系统必须以某种方式知道当前用户的ID。
如果我的理解是正确的,并且我只需要当前用户的ID,那么有没有一种方法可以在不返回数据库中所有用户信息的情况下获取它?
我知道我可以使用
User.Identity.Name
来获取当前用户的用户名,但我需要ID。
Membership.GetUser().ProviderUserKey
这样简单的东西相比有什么优势。 - Jonathan Woodaspnetdb
数据库中的aspnet_Membership_GetUserByName
存储过程,其中一个查询字段具有ntext
数据类型。您没有详细说明您的设置是什么,因此可能会出现问题。但是,您错过了调用Membership.GetUser().ProviderUserKey
的重点。您可以获得用户ID,但是Membership.GetUser()
正在执行aspnet_Membership_GetUserByName
-通过SQL Server Profiler运行它以进行确认。从未打扰过检查ASP.NET缓存什么。 - kuujinboMembership.GetUser()
返回整个用户记录——这是我最初想避免的东西。但是看着你发布的代码的复杂性,我并没有真正看到它将会更快。因此,我不确定我真的看到了很大的优势。抱歉,我错过了你提到ntext
的观点。为什么它会成为问题?(我正在使用几乎所有的最新版本)。 - Jonathan Woodaspnet_Membership_GetUserByName
查询11个字段,包括SQL Server中性能最差的数据库类型之一aspnet_Membership.dbo.Comment
。根据您的问题,一个合理的假设是您想要任何可能的优化。答案可以减少网络流量,特别是如果您在设置中使用了MembershipUser.Comment
(问题中未指定)。请不要认为这是“复杂的*”,但如果您认为答案很复杂,最好坚持使用Membership.GetUser().ProviderUserKey
(差异对您不重要)。祝你好运。 - kuujinbo