C # webservice асинхронный обратный вызов не вызывается при ошибке HTTP 407 - PullRequest
0 голосов
/ 30 апреля 2010

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

Если запрос синхронный, моя работа проста. Перехватите WebException, проверьте код 407 и запросите у пользователя учетные данные для входа.

Однако для асинхронных запросов у меня возникает проблема: обратный вызов никогда не вызывается! Я запустил трассировку проволочной акулы и действительно увидел, что ошибка HTTP 407 возвращается назад, поэтому я удивлен, что делать.

Вот код, который устанавливает обратный вызов и запускает запрос:

TravelService.TravelServiceImplService svc = new TravelService.TravelServiceImplService();
svc.Url = svcUrl;
svc.CreateEventCompleted += CbkCreateEventCompleted;
svc.CreateEventAsync(crReq, req);

И код, который был сгенерирован, когда я использовал WSDL:

public void CreateEventAsync(TravelServiceCreateEventRequest CreateEventRequest, object userState) {
        if ((this.CreateEventOperationCompleted == null)) {
            this.CreateEventOperationCompleted = new System.Threading.SendOrPostCallback(this.OnCreateEventOperationCompleted);
        }

        this.InvokeAsync("CreateEvent", new object[] {
                    CreateEventRequest}, this.CreateEventOperationCompleted, userState);
    }

    private void OnCreateEventOperationCompleted(object arg) {
        if ((this.CreateEventCompleted != null)) {
            System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
            this.CreateEventCompleted(this, new CreateEventCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
        }
    }

Отлаживая код WS, я обнаружил, что даже метод SoapHttpClientProtocol.InvokeAsync также не вызывает его обратный вызов. Мне не хватает какой-то конфигурации?

Ответы [ 2 ]

0 голосов
/ 29 июля 2010

У меня была такая же проблема. Теперь я просто запускаю таймер и захожу в свое отключенное состояние.

0 голосов
/ 03 мая 2010

Позже я узнал, что проблема была с моим прокси-сервером, а не с кодом. Переключаясь на другой прокси-сервер, а также НЕ тестируя с базовой аутентификацией (кто вообще его использует?), Я смог получить обратные вызовы.

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