mrDivan Ответов: 0

Асинхронный вызов на soap webservice


Добрый день люди

У меня возникла проблема, когда мне нужно было сделать асинхронный вызов метода в веб-службе, на которую ссылаются. Я понятия не имею, как это сделать. Не мог бы кто-нибудь просто указать мне правильное направление?

Вот методы на веб-сервисе

public MADAT_Output MADAT(MADAT_Input MADATRequest) {
         object[] results = this.Invoke("MADAT", new object[] {
                     MADATRequest});
         return ((MADAT_Output)(results[0]));
     }

     /// <remarks/>
     public void MADATAsync(MADAT_Input MADATRequest) {
         this.MADATAsync(MADATRequest, null);
     }

     /// <remarks/>
     public void MADATAsync(MADAT_Input MADATRequest, object userState) {
         if ((this.MADATOperationCompleted == null)) {
             this.MADATOperationCompleted = new System.Threading.SendOrPostCallback(this.OnMADATOperationCompleted);
         }
         this.InvokeAsync("MADAT", new object[] {
                     MADATRequest}, this.MADATOperationCompleted, userState);
     }

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


и это мой метод, который я пытаюсь вызвать веб-сервис

  public LoginStatus getMADAT_Output(MADAT_Input input, out MAINP_Output output)
        {

            output = null;
            MADAT_Output outputTemp;

            try
            {
                
                outputTemp = lsWS.MADATAsync(input);
            }
            catch (WebException e)
            {
#if WIN
                Console.WriteLine("Network Exception:\n  Status=" + e.Status + "\n  Message=" + e.Message);
                //throw e;
#endif
                if (e.Status == WebExceptionStatus.Timeout)
                {
                    //if (e.Message == "The operation has timed out") ;
                    //if (e.Message == "The request has timed out") ;
                    return LoginStatus.Offline;
                }
                else if (e.Status == WebExceptionStatus.ConnectFailure)
                {
                    //if (e.Message == "Unable to connect to the remote server") ;
                    return LoginStatus.Offline;
                }
                else if (e.Status == WebExceptionStatus.ProtocolError)
                {
                    if (e.Message == "The request failed with HTTP status 404: Not Found.")
                    {
                        return LoginStatus.ServerError;
                    }
                }

                //return "Connection failed\nPlease try again later";
                return LoginStatus.NetworkError;
            }


очень ценю

Что я уже пробовал:

Я пытался использовать await, но я продолжаю получать ошибки

0 Ответов