Note that the explanation applies to ASP.NET 2.0. In addition to your examples, ASP.NET 1.1 restarts can also be caused by...
Software & Services
Anti-virus
Indexing service
Backup
machine.config
updating more than numRecompilesBeforeAppRestart
processModel
ASP.NET worker process problems...
consumes too much memory
deadlocks
overloaded queues
process level isolation
protection settings
application pool settings (recycling)
...and other more difficult to diagnose issues.
Here's a simple script to check the reasons for the last 10 restarts for asp.net 1.1:
restarts.aspx
<script runat="server">
Sub Page_Load(sender as Object, e as EventArgs)
dgHistory.DataSource = ProcessModelInfo.GetHistory(10)
dgHistory.DataBind()
End Sub
</script>
<asp:datagrid id="dgHistory" runat="server" HorizontalAlign="center"
AutoGenerateColumns="False" CellPadding="4">
<HeaderStyle Font-Bold="True" BackColor="#dddddd" />
<Columns>
<asp:boundcolumn HeaderText="Process ID" DataField="ProcessID" />
<asp:boundcolumn HeaderText="Start Time" DataField="StartTime" />
<asp:boundcolumn HeaderText="Peak Memory Used (in KB)"
DataField="PeakMemoryUsed" />
<asp:boundcolumn HeaderText="Shutdown Reason" DataField="ShutdownReason" />
</Columns>
</asp:datagrid>
References:
Displaying Information about the ASP.NET Process (1.1)
http://aspnet.4guysfromrolla.com/articles/021502-1.aspx
Logging ASP.NET Application Shutdown Events (1.1 or 2.0)
http://weblogs.asp.net/scottgu/archive/2005/12/14/433194.aspx
I hope this is of some help to you.