Is this pattern OK?
- From: "richard.markiewicz@xxxxxxxxxxxx" <richard.markiewicz@xxxxxxxxxxxx>
- Date: Fri, 18 Jan 2008 08:57:50 -0800 (PST)
Hi Gurus,
Working with a .NET 2 C# web application. Using
System.DirectoryServices a lot to read information from AD. There
seemed to be several bugs in the .NET 1.1 implementation of that DLL
and out of habit I now very aggressively dispose of objects when I'm
done with them.
Is there anything wrong with this pattern:
DirectoryEntry objADAM = null;
DirectorySearcher objSearchADAM = null;
SearchResultCollection objSearchResults = null;
try
{
objADAM = new DirectoryEntry(ldap, admin, pass,
AuthenticationTypes.Secure);
objSearchADAM = new DirectorySearcher(objADAM);
objSearchResults = objSearchADAM.FindAll();
//Do something with the search results
objSearchResults.Dispose();
}
catch(Exception ex)
{
//Handle any errors
}
finally
{
objSearchADAM.Dispose();
objADAM.Dispose();
objSearchResults.Dispose();
}
The reason I ask is that this exact pattern exists in one of our web
applications that we recently updated from .NET 1.1. to .NET 2.0. In
the last week it has been randomly throwing null reference exceptions.
I cannot recreate what is causing the exception, but it can be
resolved by recycling the application in IIS. The only change to the
server in the last week is application of KB943485 and KB941644.
Looking at the stack trace indicates the null reference exception is
coming on the line:
objSearchResults.Dispose();
Within the finally{} block. So I assume I should either remove the
first call to Dispose(), and have everything in the finally{} block or
change the finally{} block to something like:
if(objSearchResults != null)
objSearchResults.Dispose();
The thing I can't work out is why this only started happening in the
last week!
Many thanks for any advice, Richard
.
- Follow-Ups:
- Re: Is this pattern OK?
- From: Ben Voigt [C++ MVP]
- Re: Is this pattern OK?
- From: Peter Duniho
- Re: Is this pattern OK?
- Prev by Date: Re: Access to file
- Next by Date: Re: Question on using IIS for a C#/WCF backend
- Previous by thread: Question on using IIS for a C#/WCF backend
- Next by thread: Re: Is this pattern OK?
- Index(es):