Può capitare in un progetto VB.NET di tipo WebSite che un evento venga scatenato due volte (onrowdeleting occurs twice).
Normalmente questo comportamento è dovuto al fatto che l'evento è stato dichiarato nella pagina aspx
<asp:GridView ID="GridView1" runat="server" 
  OnRowDeleting="GridView1_RowDeleting" 
  ...
  />
ed anche nel codice associato alla pagina (aspx.vb) tramite la keywords Handles
Protected Sub GridView1_RowDeleting(ByVal sender As Object, _
  ByVal e As System.Web.UI.WebControls.GridViewDeleteEventArgs) _
  Handles GridView1.RowDeleting
 ...
Questo può accadere quando si dichiara l'evento nella pagina (OnRowDeleting="GridView1_RowDeleting") e successivamente si fa doppio click sull'evento nella scheda delle proprietà dell'oggetto. In questo modo Visual Studio aggiunge, a livello di codice, il gestore dell'evento (Handles GridView1.RowDeleting).

Per risolvere il problema basta eliminare l'associazione a livello di codice (Handles GridView1.RowDeleting) e lasciare la dichiarazione nella pagina (OnRowDeleting="GridView1_RowDeleting").

Stesso discorso per qualsiasi altro evento gestito nella pagina.

I progetti di tipo WebApplication in VB.NET non hanno questo problema e generano, correttamente, l'evento solo una volta. Anche i progetti C# sia WebSite che WebApplication non presentano il problema.