Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsFree MagazinesWhite PapersSubmit Content
Discussion GroupsASP.NETWindows FormsLanguages.NET FrameworkVisual Studio.NET
Articles.NET FrameworkASP.NETToolsWindows Forms
.NET DirectoryOpen Source ProjectsUser GroupsWeb Resources
Related Topics
Visual Basic 6SQL ServerMS AccessOther DB ProductsMS Server ProductsMore Topics ...

.NET Forum / ASP.NET / Web Services / January 2004

Tip: Looking for answers? Try searching our database.

Web service Asynchronous call fails

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
anonymus - 27 Jan 2004 13:31 GMT
Hi
I created a webservice with a simple we method to increment a number passed from the client(a console app) .
Then i call this web service method asynchronus mode from the client.
I create a callback function and call EndXXX(XXX denotes the function name) in  the callback function.
But the function call never ends. means the web service is not working in async mode
I have added the web refernce properly because i was able to succesfully call the same function in synchronous mode

Where am i going wrong

Thanks in advance
Nirk
Trebek - 27 Jan 2004 23:41 GMT
The issue lies with your calling of the async webmethod, not the web service
itself.  To the web service, your proxy's call is treated as synchronous
from its prospective.  It doesn't know how you invoked the call.  Why don't
you post your asynchronous call in an example format and I'm sure we can
help you.  Are you calling the async method with waitHandles, callback
functions...?

EX:

IAsync example using delegates -- for example SomeMethod returns int

private void invokeMethod(string args){

  <proxy_class_instance>.BeginSomeMethod(new
AsyncCallback(SomeMethod_Callback),null)

}

private void count_Complete(IAsyncResult ir)

{

   int i = <proxy_class_instance>.EndSomeMethod(ir);

   Debug.WriteLine(i.ToString());

}

IAsync example using IAsyncResult in synchronous fashion

private void invokeMethod(string args){

  IAsyncResult ir = <proxy_class_instance>.BeginSomeMethod(null,null)
  int i = <proxy_class_instance>.EndSomeMethod(ir);
   Debug.WriteLine(i.ToString());

}

There are other ways to call it as well (using waithandles,
manualresetevents, etc..)but my guess would be to try one of these options.
If you still have the same problem, just post the code.

Alex

> Hi
> I created a webservice with a simple we method to increment a number passed from the client(a console app) .
[quoted text clipped - 7 lines]
> Thanks in advance
> Nirk
nirk - 28 Jan 2004 03:36 GMT
Hi Trebek
Please find the sample code as below.

CLIENT CODE
class Class1
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        private static bool bEnd= false;
       

        public static  void PrimeCallback(IAsyncResult arResult)
        {
            // Obtains the last parameter of the delegate call.
           
            Console.WriteLine ("Inside PrimeCallback");
            // get the "this" pointer that was passed...
            WSPrime wsp=(WSPrime)arResult.AsyncState;
       
            // call "EndPrime" and get the result..
            int iCount=wsp.EndPrime(arResult);
       
            /// show the result of the webservice call..
            Console.WriteLine("Async. WebService call found {0} primes.", iCount);
       
            // set flag so that application can terminate...
            bEnd=true;
       
        }
        [STAThread]
        static void Main(string[] args)
        {
           
            try
            {
                int intTemp;
                IAsyncResult ar;
                Console.WriteLine("Calling WebService Asynchronously...\n");
                AsyncCallback ascb = new AsyncCallback (Class1.PrimeCallback);
                //for (int i =2;i<=10;i++)
            {
               WSPrime wsp = new WSPrime();
                //intTemp = wsp.Prime (10);
                wsp.BeginPrime(10,ascb,wsp);
               
            }
               

                Console.WriteLine ("waiting for WebService");
                while(bEnd == false);               
                Console.WriteLine ("Over" );
                Console.ReadLine ();
            }
           
            //
            // TODO: Add code to start application here
            //
            catch(System.Exception exception)
            {
                Console.WriteLine (exception.Message);
            }
        }
       
       
    };

WEBSERVICE CODE
using System.Web.Services;

public class WSPrime : WebService
{
    // This method returns the number of prime number lying between
    // 2 and num.
       [WebMethod]
       public int Prime(int num)
       {
           int iCount=0;
           for(int i=2;i<num;i++)
           {
               bool bPrime=true;
               for(int j=2;j<i;j++)
               {
                   // is this number prime ?
                   if (i%j==0)
                   {
                       // nope.. it isn't...
                       bPrime=false;
                       break;
                   }
               }
              
               if (bPrime==true)
                   iCount++;
           }
          
           // return the count..
           return iCount;
       }
}

 I tried using Thread.Sleep() in 'While' loopin client code .As well as i tried to catch the error exception by placing a try/ catch to my callback method in client code but none of them helped me either
Trebek - 28 Jan 2004 13:35 GMT
Nirk,

Due to async calls coming back on different thread pool threads, try taking
the webservice call out of the 'Main' method and instead add it to some
other method and see if the result is the same.  Using your code, I had no
trouble calling the WS method from another method of my instance class.

HTH,
Alex

> Hi Trebek
> Please find the sample code as below.
[quoted text clipped - 95 lines]
>
>   I tried using Thread.Sleep() in 'While' loopin client code .As well as i tried to catch the error exception by placing a try/ catch to my callback
method in client code but none of them helped me either
nirk - 29 Jan 2004 03:31 GMT
Hi Trebe
Pls post yur client code i want to have a look to i

Thanks in advanc
Nirk

Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.