Заголовки ответа доступа от вызова ASP.Net PageMethod

Чтобы использование Ajax ASP.NET назвало PageMethods, как я могу получить доступ к заголовкам ответа Http из метода "успеха"?

Например:

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

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

Спасибо за любую справку

6
задан James 8 January 2010 в 18:35
поделиться

2 ответа

ну, перед использованием MVVM, я использовал MVC в рамке ASP.NET MVC. Архитектура Model-view-controller довольно очевидна, поэтому она помогла мне изменить свое отношение к стандартным ASP.NET и WinForms.

MVVM немного «труднее» понять, но как только вы поймете, что WPF отличается от web (вы, как пользователь, отвечаете на просмотр, а не на контроллер), имеет смысл перейти от MVC к MVVM. Предлагаю прочитать статьи о MVVM на главной странице Caliburn project (левая колонка, часть 3. Учеба в MVVM) - это мне очень помогло.

Что касается приложений WPF (Silverlight), я настоятельно рекомендую начать создавать приложения прямо на вершине PRISM ( Composite WPF ) и/или Caliburn - хотя это может быть запутанным с самого начала, все же это гораздо лучший выбор, чем с ванильным WPF (говоря о практиках, которые они заставляют вас использовать). Но возьмите наверняка, что после того, как вы закончите свое первое приложение WPF, вы захотите переписать его с нуля. Но вот как это работает, когда вы изучаете новую технологию.

-121--2476965-

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

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

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

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

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

3
ответ дан 17 December 2019 в 18:16
поделиться
[

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

] [

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

] [

]Webrequestmanager - это статический объект, который вы можете извлечь из:[

] [

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

] [

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

] [

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

].
0
ответ дан 17 December 2019 в 18:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: