in

ASP.NET Weblogs

Yves Reynhout's Blog

The seagile man

March 2003 - Posts

  • OpmlDeduplicator

    Just posted the OpmlDeduplicator. A silly cmdline tool that removes duplicates from an opml file based on an outline attribute.
  • Beware of using the ThreadStaticAttribute in an ASP.NET environment

    While implementing NAuthorize, I needed an object registry on a per user/session basis as discussed in

    Patterns of Enterprise Application Architecture

    The way this works in .NET is as follows (assuming ObjectRegistry is a collection class and a singleton):

        [ThreadStatic]
    private static volatile ObjectRegistry _instance = null;

    public static ObjectRegistry Instance
    {
    get
    {
    if(_instance == null)
    {
    lock(typeof(ObjectRegistry))
    {
    if(_instance == null)
    {
    _instance = new ObjectRegistry();
    }
    }
    }
    return(_instance);
    }
    }


    The ThreadStatic attribute is what makes this work. The only gotcha so far is that this doesn't work in an ASP.NET application (Web/Webservice) as threads are reused for different requests, hence having the wrong ObjectRegistry serving the wrong user/session. The only solution I can think of for the time being, is having the ObjectRegistry detect if there's a HttpContext, and if so, subscribe to the EndRequest event of the associated HttpApplication and clear itself when the event fires.

    UPDATE: Create your own HttpContext class from Brian Bilbro also provides a solution to this same problem. The only thing worth checking out is that the CallContext is properly destroyed when the web/webservice request is served.

  • Is this the B L O G use case diagram?

    This is my perception of blogging so far, considering I've only just started.
    http://www10.brinkster.com/esealer/blogcase.png
    [Sorry, brinkster doesn't allow http referrers outside of its own domain.]

More Posts