Reputation: 3550
I have a .NET WeBService project and a reference to it from another project. Visual Studio generates a proxy class (SoapHttpClient) with all methods of my Web Service. The project that I use the WebService from is a .NET CF mobile application. This means that Internet access and WebService is not always available. What I need to do is to assure that all requests from mobile to the Web Service will finally reach it. I want to do so by queuing all requests to WebService in a worker thread that executes the Web Requests serially until the execution succeedes. The problem is that the generated proxy class has all web methods named. There is no a mechanism that can "extract" a generic "Web Request object" from the method that I can store for later use. I have to call the Web Methods explicitly using their names and parameters. This compilcates my code. My question is - Is there a mechanism in .NET WebServices to "extract" a Web Request as an object and us it later?
Regards
Dominik
Upvotes: 0
Views: 305
Reputation: 49245
To my knowledge, .NET generated proxy will not give the web request objects that you want. But you can create a simple proxy your self to store the request information and then later use .NET proxy (or SoapHttpClientProtocol class) to make the web request. Below is the sample template code:
public class MyRequest
{
public MyRequest(string methodName, params object[] parameters)
{
this.MethodName = methodName;
this.Parameters = parameters;
}
public string MethodName { get; set; }
public object[] Parameters { get; set; }
public object[] Response {get; set;}
}
public class MyProxy : dotNetGeneratedServiceProxy
{
List<MyRequest> Requests { get; set; }
public void QueueMethod1(int param1, string param2)
{
Requests.Add(new MyRequest("Method1", param1, param2));
}
public void QueueMethod2(string param1)
{
Requests.Add(new MyRequest("Method2", param1));
}
public void RunAllRequests()
{
foreach (var request in Requests)
{
var result = this.Invoke(request.MethodName, request.Parameters);
}
}
}
Hope this will give you an idea.
Upvotes: 1