Мой ответ включает Ответ Артурдента510 , но у меня недостаточно репутации, чтобы просто комментировать его ответ, ха-ха. Его ответ помог мне НАМНОГО понять, куда я должен был пойти, но он был не совсем полным для меня.
Помещение вызова Response.Redirect в обработчик EndRequest вызвало бесконечный цикл. Я думаю, это потому, что Response.Redirect вызывает EndRequest. Таким образом, EndRequest вызывался снова и снова навсегда.
Чтобы обойти это, я добавил приватное логическое значение, чтобы указать, если я уже вызывал для перенаправления. Если я уже вызвал перенаправление, то больше не буду вызывать Response.Redirect. Вот как выглядел мой метод EndRequest:
Private Sub Application_EndRequest(ByVal source As Object, ByVal e As EventArgs)
If Not _blnHasAccess AndAlso Not _blnRedirected Then
_blnRedirected = True
HttpContext.Current.Response.Redirect("~/Error.aspx")
End If
End Sub