Веб-сервис ASP.NET: один вызов моего XmlHttp приводит к двойному запросу - PullRequest
1 голос
/ 03 июня 2011

У меня очень странная проблема с моим веб-сервисом:

  • это типичный / стандартный веб-сервис ASP.NET (v4), вызываемый через GET.

  • все работает отлично, но сегодня я сделал трассировку, так как настроил httpn-модуль customn

  • в этом http-модуле я поместил несколько лог-вызовов, в начало / конец запроса

  • при просмотре журналов я вижу, что если мой сервис вызывается один раз (с помощью JS-метода клиента), на самом деле к веб-сервису выполняется два запроса

(http-модуль работает также для стандартных страниц winform ASP.NET, там у меня нет этой проблемы - это происходит только в случае вызова веб-службы)

Кто-нибудь имеет представление, что может вызвать эту проблему?

Ответы [ 2 ]

0 голосов
/ 16 июня 2011

OK, это не окончательное решение, а хорошая работа:

проблема:

  • в случае JS-вызова клиента к модулю веб-сервиса, функции выполняются дважды, так как модуль запускается два раза: один для CurrentHandler == TransferRequestHandler, второй вызов (в котором доступно состояние сеанса ) затем обрабатывается CurrentHandler == Script / ASPX / Handler

  • Я не знаю (до сих пор), в чем причина, но я решил ее, просто возвратив / не выполняя мой специфичный для HttpModule материал при первом запуске

  • Итак, все работает нормально, но я все еще ищу объяснение, почему HttpModule PreExecute / PostExecuteRequestHandler вызывается дважды в случае вызова WebService, тогда как это не , вызываемое дважды для одного / стандартного запроса страницы ASP.NET

Привет

0 голосов
/ 03 июня 2011

Перенаправление может вызвать такое поведение, например, добавить косую черту в конец URL без слеша. Кроме того, для многих схем аутентификации могут потребоваться два запроса. Если бы я был на вашем месте, я бы посмотрел содержимое обоих запросов и заголовки, чтобы увидеть, что внутри.

Кроме того, вы можете запустить Fiddler (или любой другой сетевой трассировщик, например Firebug или панель инструментов IE dev) на клиенте, чтобы убедиться, что клиент фактически делает два запроса. Может случиться так, что там, где у вас есть код входа в HttpModule, может быть место, где несколько вызовов являются естественными (например, один раз для заголовков, один раз для основного текста).

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