Проверьте, есть ли IsCallback в Application_BeginRequest - PullRequest
2 голосов
/ 10 июля 2009

У меня есть веб-приложение (.NET 3.5), которое имеет этот код в Global.asax:

Sub Application_BeginRequest(ByVal sender As Object, ByVal e As EventArgs)
    LinkLoader()
    PathRewriter()
    PathAppender()
End Sub

Я хочу, чтобы все эти функции внутри вызывались, за исключением случаев, когда это обратный вызов AJAX. Итак, в идеале я бы изменил это на:

Sub Application_BeginRequest(ByVal sender As Object, ByVal e As EventArgs)
    If not Page.IsCallback then
        LinkLoader()
        PathRewriter()
        PathAppender()
    End If
End Sub

Но здесь нет доступа к объекту страницы. Итак, в основном мой вопрос:

Как проверить, является ли запрос обратным вызовом AJAX внутри Application_BeginRequest?

Большое спасибо за любые отзывы.

Ответы [ 3 ]

1 голос
/ 10 июля 2009

Джон,

Спасибо, что указали мне в правильном направлении. Решение состоит в том, чтобы на самом деле проверить Request.Form ("__ ASYNCPOST"). Он имеет значение «истина», если это CallBack.

Большое спасибо за помощь!

1 голос
/ 18 декабря 2009

У вас должен быть доступ к объекту HttpContext.Current.Handler, который вы можете привести к объекту Page и получить Page.IsPostBack или Page.IsCallBack. Хотя, чтобы сделать это безопасно, вам нужно сначала проверить, что это объект Page, а не null:

With HttpContext.Current
   If TypeOf .Handler Is Page Then
      Dim page As Page = CType(.Handler, Page)
      If page IsNot Nothing AndAlso (page.IsCallBack OrElse page.IsPostBack) Then
         'Do something
      End If
   End If
End With
0 голосов
/ 10 июля 2009

Насколько я понимаю, все, что делает IsCallback, проверяет, есть ли в форме переменная post с именем __CALLBACKARGUMENT. Вы можете проверить форму самостоятельно в Context.Request.Form, и это должно сказать вам то же самое, что и IsCallback.

...