Это может помочь вам:
http://msdn.microsoft.com/en-us/magazine/cc163941.aspx
Поиск слова __CALLBACKID:
Чтобы определить режим обратного вызова, среда выполнения ASP.NET ищет запись __CALLBACKID в коллекции запросов. Если такая запись найдена, среда выполнения завершает выполнение обратного вызова.
Нам нужно было сделать это из файла app_code, где доступ к объектам Page.xxxx был недоступен. Это код, который я использовал в итоге:
If Not IsNothing(HttpContext.Current.Request("__CALLBACKID")) Then
'The request is a callback
Else
'The request is not a callback
End If
Возможно, не самое красивое решение, но оно делает свою работу. Некоторое время мы использовали Array.IndexOf, но иногда кажется, что этот параметр формы возвращается как строчный параметр (не уверен, почему и как), а Array.IndexOf - это поиск с учетом регистра.
Будьте внимательны при поиске таких ключей запроса __XXXX. Я помню, как читал где-то, что не очень хорошая идея "ярлык" для этих элементов, поскольку их имена могут измениться в какой-то будущей версии .net. Просто имейте это в виду!