July 29, 2009, 6:17 pm
Anyone who is a regular ASP.NET developer is likely familiar with the ASP.NET Page LifeCycle diagram that Kris van der Mast posted on his blog more then 3 years ago. It is indisputably the best reference when trying to determine where to insert your code in the life cycle of your pages. There is however a lack of clarity on where MasterPages fit into the picture. With a bit of logging and digging, here’s a diagram which illustrates clearly in which order MasterPage and Page events are fired. If you’re deriving a custom MasterPage or Page class for your site, the diagram also shows the relation between your class code and the automatically attached MasterPage and Page events.

July 24, 2009, 5:07 pm
If you’re building a site that contains nested applications, you may find yourself confused at what appears to be IIS completely disregarding your virtual directories. The behavior is by design. Although the applications will get isolated, the web.config settings from parent applications propagate to children applications. An easy fix is to simply wrap your web.config with the following to disable propagation :
<location path="." inheritInChildApplications="false">
<system.web>
...
</system.web>
</location>
Most sections can be wrapped at the exception of <configSections>, <runtime> and of course, the <configuration> root node.
Check out the full article on aspdotnetfaq.com for more details.
July 24, 2009, 1:04 pm
It didn’t take long for the entire world to learn about Microsoft’s submittable of 20,000 lines of code for the Linux driver base. As a surprise reaction to both sides of the camp, Linus Torvalds responded in favor of Microsoft’s move. I have a feeling that the most memorable portion of his response will become this little snippet :
I may make jokes about Microsoft at times, but at the same time, I think the Microsoft hatred is a disease. I believe in open development, and that very much involves not just making the source open, but also not shutting other people and companies out.
July 23, 2009, 10:14 pm
Many developers seem to find it difficult to get their ASP.NET pages rendering in a valid XHTML Strict fashion. The solution is just a quick MSDN lookup away. Only two steps are required.
One, declare the proper XHTML Strict DOCTYPE :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
Two, edit your Web.Config file and the following to the System.Web section :
<xhtmlConformance mode="Strict"/>
ASP.NET will now adjust the HTML it outputs from controls and get rid of the infamous name attribute on the form tag.
July 21, 2009, 12:30 am
The SqlDataAdapter has a CommandTimeout property but does offer any method to set any kind of timeout during the Fill method. If you are returning rather large data sets, you can quickly run into a problem. The obvious solution would be to inherit the SqlDataAdapter and simply override the Fill method, except that the SqlDataAdapter cannot be inherited. As a result, we must implement the same methods that the SqlDataAdapter does and attach them to a private internal SqlDataAdapter to do all the heavy lifting. With the use of anonymous delegates, we can easily rework the Fill methods to offer a new FillTimeout property and throw an exception when we exceed our desired timeout.
public int FillTimeout
{
get { return _fillTimeout; }
set { _fillTimeout = value; }
}
public int Fill(DataSet dataSet)
{
if (_fillTimeout == 0)
{
return _adapter.Fill(dataSet);
}
else
{
int rows = 0;
Thread fillThread = new Thread(delegate() { rows = _adapter.Fill(dataSet); });
fillThread.Start();
if (fillThread.Join(_fillTimeout * 1000))
{
return rows;
}
else
{
try
{
fillThread.Abort();
}
catch (ThreadAbortException)
{
Thread.ResetAbort();
}
throw new TimeoutException();
}
}
}
Download the full ExtendedSqlDataAdapter class : ExtendedSqlDataAdapter.cs
July 20, 2009, 7:33 pm
Most of the projects that I have been working on lately did not require any advanced AJAX. Most of the time, stuffing the results of a simple GET into innerHTML has usually been sufficient. Recently, I needed to do some more advanced AJAX work so I started looking into JSON. There a hundreds of helper classes that people have dreamed up already for ASP.NET, however this project was under the Classic ASP (VBScript) umbrella.
I fell upon a nice little utility on aptly called aspjson. It is a nice utility except the implementation of multi-dimensional array support is flawed. Try to JSON an array that has dimensions with more than 10 elements and you will quickly see what I mean.
I rewrote the multi-dimensional array support from scratch and I am releasing the code under the same license as the original author as well as obviously attributing credit to Tuğrul Topuz for his original code.
Download the ASPJSON 2.1 source