Доступ к заголовкам ответов из вызова ASP.Net PageMethod - PullRequest
6 голосов
/ 08 января 2010

При использовании ASP.Net Ajax для вызова PageMethods, как я могу получить доступ к заголовкам ответов Http из метода «success»?

Например:

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

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

Спасибо за любую помощь

Ответы [ 2 ]

3 голосов
/ 10 января 2010

В вашем примере возвращаемое значение PageMethods.DoSomething должно быть равно WebRequest , если это прокси-сервер веб-службы asp.net.Это предусмотрено для того, чтобы вы могли манипулировать запросом после того, как вы его инициировали (т.е. отменили его и т. Д.).

С этим классом у вас есть метод add_completed, который вы можете использовать для добавления обработчика, когда веб-запросзавершается.Подпись для обратного вызова - function OnWebRequestCompleted(executor, eventArgs), а параметр executor позволяет вам получить дополнительную информацию об ответе.Например, вы можете получить заголовки ответа с помощью executor.getAllResponseHeaders();это должна быть карта (именованная коллекция) имен и значений заголовков.

Так что, если вы добавляете обработчик к завершенному событию веб-запроса сразу после вызова метода сервиса, он должен работать (вмир, который может реагировать быстрее, чем две последовательные строки кода!).

Предыдущая гиперссылка на WebRequest содержит полный пример того, как это сделать.Однако обратите внимание, что этот код напрямую использует WebRequest.

Прокси-классы Ajax Web-службы Asp.Net используют класс WebServiceProxy, и каждый прокси-метод в конечном итоге вызывает свой метод invoke, который возвращает WebRequest экземпляр.

0 голосов
/ 09 января 2010

У веб-запроса есть коллекция заголовков

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

Webrequestmanager - это статический объект, из которого вы можете извлечь эту информацию из:

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

Надеюсь, между двумя ссылками имеет смысл: -; ​​

Я не говорю, что перекодировать, чтобы использовать это обязательно, но методы страницы - это обертка, и поэтому я думаю, что она получит доступ к информации из веб-запроса, на которую может повлиять WebRequestManager ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...