> I have the following class:
>
> public sealed class UserHelper
> {
> private static IUserService _userService;
>
> public static SiteUser LoadCurrentUser()
> {
> if ((HttpContext.Current.User == null) ||
> (!HttpContext.Current.User.Identity.IsAuthenticated))
> throw new Exception("User is not authenticated.");
> if (_userService == null)
> _userService =
> ContainerWebAccessorUtil.Container.Resolve<IUserService>();
> return _userService.GetSiteUserByUid(new
> Guid(HttpContext.Current.User.Identity.Name));
> }
> }
>
> My question is, is this method thread safe from an ASP.NET application?
no. You should do:
private static IUserService _userService =
ContainerWebAccessorUtil.Container.Resolve<IUserService>();
public static SiteUser LoadCurrentUser()
{
if ((HttpContext.Current.User == null) ||
(!HttpContext.Current.User.Identity.IsAuthenticated))
throw new Exception("User is not authenticated.");
return _userService.GetSiteUserByUid(new
Guid(HttpContext.Current.User.Identity.Name));
}
i.o.w.: initialize the singleton in the static declaration, otherwise
it's not threadsafe. Please see the excellent articles about this by Jon
Skeet:
http://www.yoda.arachsys.com/csharp/singleton.html
FB
------------------------------------------------------------------------
Lead developer of LLBLGen Pro, the productive O/R mapper for .NET
LLBLGen Pro website: http://www.llblgen.com
My .NET blog: http://weblogs.asp.net/fbouma
Microsoft MVP (C#)
------------------------------------------------------------------------
===================================
This list is hosted by DevelopMentorĀ® http://www.develop.com
View archives and manage your subscription(s) at http://discuss.develop.com