I have several ASP.NET applications deployed in a farm of 4 Windows 2003 machines. Each application uses a separate App Pool and Virtual Directory in IIS. They rely heavily
Transport level errors are often linked to the connection to sql server being broken ... usually network.
Timeout Expired is usually thrown when a sql query takes too long to run.
So I would troubleshoot the link to your Sql Server and then monitor to see what queries are timing out.
Sounds like a SQL job is running, backup? That might be locking tables or restarting the service.