This is a dumping ground of software development topics that I've run across and found interesting (mainly .NET development). Many topics are covered more thoroughly in other places, and much of the information is gleaned from other places, and I'll try to credit those sources when possible.

Wednesday, November 29, 2006

Installing IIS after Visual Studio

This is pretty lame, but it's bit me twice causing a few wasted hours. If you install IIS after Visual Studio, some ASP.NET settings aren't applied properly. After messing with permissions and other settings to no avail, I did a Repair of the .NET Framework installation and I was in business. The Microsoft article below doesn't mention the Repair, but says to use the aspnet_regiis utility. Maybe I'll try that next time...

http://support.microsoft.com/default.aspx?scid=kb;en-us;306005

Ping memory leak?

The details give me a headache, but there appears to be a leak in the 2.0 Ping class, particularily when sending asynchronously.

http://blog.downtownsoftwarehouse.com/2006/11/14/using-the-ping-class-in-net-20-without-memory-leaks/

A longer diatribe that reaches the same conclusion:
http://www.julmar.com/blog/mark/PermaLink,guid,fc83197b-ce2d-47ab-b70a-db352085b370.aspx

And just in case the links above die, here's the gist of it:
"...you must explicitly call IDisposable.Dispose(), or you’ll end up with the inherited Dispose() method which doesn’t do anything useful at all in this case. You can do this by casting the Ping object to IDisposable."


private void Refresh(Object sender, EventArgs args)
{
Ping ping = null;
try
{
ping = new Ping();
ping.PingCompleted += PingComplete;
ping.SendAsync(defaultHost, null);
}
catch
{
((IDisposable)ping).Dispose();
}
}

private void PingComplete(Object sender, PingCompletedEventArgs args)
{
((IDisposable)sender).Dispose();
}

Followers