2010-01-08 9 views
5

Podczas korzystania z Ajax ASP.Net w celu wywoływania metody PageMethods, w jaki sposób uzyskać dostęp do nagłówków odpowiedzi HTTP z metody "sukces"?Nagłówki odpowiedzi Access od strony ASP.Net PageMethod Call

Na przykład:

PageMethods.DoSomething(
    function(result){successMethod(result)}, 
    function(error){errorMethod(error)} 
); 

function successMethod(result){ 
    //------how can I access the Http response headers from here? ------ 
} 

dzięki za pomoc

Odpowiedz

2

W Twój przykład, PageMethods.DoSomething powinien mieć wartość zwracaną równą WebRequest, jeśli jest to proxy usługi WWW asp.net. Jest to możliwe, aby można było manipulować żądaniem po jego zainicjowaniu (tj. Anulowaniu itd.).

W tej klasie dostępna jest metoda add_completed, za pomocą której można dodać procedurę obsługi po zakończeniu żądania strony internetowej. Sygnatura dla wywołania zwrotnego to function OnWebRequestCompleted(executor, eventArgs), a parametr executor umożliwia uzyskanie dodatkowych informacji o odpowiedzi. Na przykład można uzyskać nagłówki odpowiedzi za pomocą executor.getAllResponseHeaders(); która powinna być mapą (nazwaną kolekcją) nazw nagłówków i wartości.

Jeśli więc dodasz moduł obsługi do zakończonego zdarzenia żądania internetowego natychmiast po wykonaniu wywołania metody serwisowej, powinien on działać (na świecie nie ma usługi sieciowej, która może reagować szybciej niż dwa kolejne wiersze kodu!).

Poprzednie hiperłącze do WebRequest zawiera pełny przykład tego, jak to połączyć. Zauważ jednak, że ten kod używa bezpośrednio WebRequest.

ASP.Net Ajax Web Service klasy proxy używają klasy WebServiceProxy, a każda metoda proxy ostatecznie wywołuje jej metodę invoke, która zwraca instancję WebRequest.

+0

Dziękuję Lord Zoltan. To bardzo pomocne informacje! – James

+0

cieszę się z użycia;) –

0

Żądanie internetowa posiada kolekcję nagłówki

http://msdn.microsoft.com/en-us/library/bb383774.aspx

webrequestmanager jest statyczny obiekt, który może być w stanie wyodrębnij tę informację z:

http://msdn.microsoft.com/en-us/library/bb397435.aspx

Mam nadzieję, że między dwoma łączami ma to sens: -;

Nie mówię Recode używać tego koniecznie, ale metody strona jest opakowaniem i jako takie Myślę, że dostęp do informacji z prośbą stron internetowych, które mogą być dotknięte od WebRequestManager ...

+0

Dzięki Brian. Jedynym problemem jest to, że nie mogę zagwarantować, że otrzymane żądanie jest tym samym, które jest związane z tą metodą sukcesu. Jest wiele żądań asynów działających jednocześnie, mogę skończyć z innym żądaniem lub samo żądanie może nawet zakończyć się w momencie wywołania metody sukcesu. Naprawdę chcę uzyskać dostęp do nagłówków odpowiedzi dla tego konkretnego połączenia. Mam opcję, aby to zrobić, jeśli recode do korzystania z biblioteki jQuery do wywołania, ale naprawdę chciałbym użyć biblioteki .net dla spójności. – James

Powiązane problemy