Pregunta

Estoy intentando probar el caso de uso de un cliente que tiene un proxy con credenciales de inicio de sesión, tratando de utilizar nuestro servicio web de nuestro cliente.

Si la solicitud es sincrónico, mi trabajo es fácil. Coger el WebException, cheque por el código 407, y solicitar al usuario las credenciales de inicio de sesión.

Sin embargo, para las solicitudes asíncronas, me parece estar funcionando en un problema: la devolución de llamada no está recibiendo llamadas! Me encontré con un rastro de Wireshark y, efectivamente, veo que el error HTTP 407 estaba siendo pasa de nuevo, así que estoy perplejo en cuanto a qué hacer.

Aquí está el código que configura la devolución de llamada e inicia la solicitud:

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

Y el código que se generó cuando consumí el 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));
        }
    }

Depuración del código WS, he encontrado que incluso el método SoapHttpClientProtocol.InvokeAsync no estaba llamando a su devolución de llamada también. Me estoy perdiendo algún tipo de configuración?

¿Fue útil?

Solución

Más tarde descubrió que el problema estaba en mi servidor proxy, y no el código. El cambio a un servidor proxy diferente, además de que no pruebas con autenticación básica (que lo utiliza de todos modos?), Yo era capaz de conseguir mis devoluciones de llamada.

Otros consejos

Yo tenía el mismo problema. Ahora acabo de crear instancias de un contador de tiempo y voy a mi estado desconectado en ese país.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top