У вас нет доступа к объекту User, потому что запрос еще не был аутентифицирован.
Попробуйте вместо этого использовать Application_AuthenticateRequest.
Вот объяснение всех событий Global.asax: https://web.archive.org/web/1/http://articles.techrepublic%2ecom%2ecom/5100-10878_11-5771721.html
И прохождение MSDN жизненного цикла приложения: http://msdn.microsoft.com/en-us/library/ms178473.aspx
Редактировать: я вижу, что вы делаете.Измените свой оператор if на оператор if и if not (извините, если синтаксис неправильный, я не использую VB.NET):
Sub Application_AuthenticateRequest()
If Context.User <> Nothing Then
Throw New Exception("User now exists")
End Sub
Вы заметите, что этот метод используется несколько раз.Исключение не будет выброшено до второго или третьего раза.Это связано с тем, что каждый запрос соответствует жизненному циклу приложения.Таким образом, вместо того, чтобы выполнять какое-либо действие, когда пользователь имеет значение NULL, вы должны выполнять его, когда пользователь не имеет значение NULL.
Если ваша цель состоит в том, чтобы динамически ограничить доступ, вы должны создать отдельный HttpModule и назначить его для файлов, которые вы ограничиваете
Однако вам необходимобудьте осторожны, чтобы не переписать всю инфраструктуру ASP.NET Application Security.Вместо этого вы можете ограничить доступ к определенным папкам в зависимости от роли.