[Webinar] Streamline your web hosting managementRegister Today

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 158
  • Last Modified:

return value async webservice

Does anyone have a good example of calling a web service asynchronously and retrieving a return value (i.e. a dataset) in ASP.NET And VB.NET ?
0
cehrnow
Asked:
cehrnow
  • 5
  • 4
1 Solution
 
Bob LearnedCommented:
Introductory questions:

What type of web service?

What type of web site?

Framework version?
0
 
cehrnowAuthor Commented:
ASMX
Framework 4.0
0
 
Bob LearnedCommented:
If you are going against a classic .asmx web service, then it should have auto-generated async methods in the proxy that it generated, so you could do something like this:

 	 Private supplier As New BookSupplier.WebService()

        Public Sub GetBookCost(ByVal bookName As String)

	   AddHandler supplier.GetCostCompleted AddressOf supplier_GetCostCompleted

	   supplier.GetCostAsync(bookName)

        End Sub

       Private Sub supplier1_GetCostCompleted(sender As Object, e As BookSupplier.GetCostCompletedEventArgs)
	   If e.Error IsNot Nothing Then
		Throw e.Error
	   End If
    	   Dim cost As Decimal = TryCast(e.UserState, Decimal)
	   costLabel.Text = "Quote from Book Supplier: " & cost
        End Sub

Open in new window

0
Receive 1:1 tech help

Solve your biggest tech problems alongside global tech experts with 1:1 help.

 
cehrnowAuthor Commented:
They did not get auto generated as I think this is not longer the default.
Can you please show what I need to add.
0
 
Bob LearnedCommented:
Can you show me the code for the auto-generated proxy?

How did you add the web service reference?
0
 
cehrnowAuthor Commented:
I don't think VS2013 adds these anymore ?
0
 
Bob LearnedCommented:
Here is an example of a classic web service reference:

     public void EchoMessageServiceAsync(string MessageID, string Destination, string Touchpoint, string Location, string Style, string ProductionFlag) {
            this.EchoMessageServiceAsync(MessageID, Destination, Touchpoint, Location, Style, ProductionFlag, null);
        }
       
        /// <remarks/>
        public void EchoMessageServiceAsync(string MessageID, string Destination, string Touchpoint, string Location, string Style, string ProductionFlag, object userState) {
            if ((this.EchoMessageServiceOperationCompleted == null)) {
                this.EchoMessageServiceOperationCompleted = new System.Threading.SendOrPostCallback(this.OnEchoMessageServiceOperationCompleted);
            }

Use the following steps:

Right click on the Reference node in the Server Explorer tree
Select Add Service Reference
Click on the Advanced button in the lower left corner
Click on the Add Web Reference button in the Compatibility section at the bottom of the Advanced dialog

This will allow you to add a web service reference the old, classic way.
0
 
cehrnowAuthor Commented:
It is the async methods in the webservice that are not being created.
Do you have VB code to show how these can be added ?
0
 
Bob LearnedCommented:
Even in Visual Basic, the async methods should be created when you add a classic web reference, using the Compatibility dialog.

I have uploaded a short .mp4 recording of what I mean.

https://filedb.experts-exchange.com/incoming/ee-stuff/8399-Add-Classic-Web-Reference.mp4
0

Featured Post

Hire Technology Freelancers with Gigs

Work with freelancers specializing in everything from database administration to programming, who have proven themselves as experts in their field. Hire the best, collaborate easily, pay securely, and get projects done right.

  • 5
  • 4
Tackle projects and never again get stuck behind a technical roadblock.
Join Now