2010-08-16 128 views
0

我有一個.NET WeBService項目和從另一個項目對它的引用。 Visual Studio使用我的Web服務的所有方法生成一個代理類(SoapHttpClient)。我使用WebService的項目是一個.NET CF移動應用程序。這意味着Internet訪問和WebService並不總是可用。我需要做的是確保所有從移動到Web服務的請求最終都能達到它。我想這樣做是通過將所有請求排隊到WebService中的一個工作者線程中來執行Web請求,直到執行成功。問題是生成的代理類具有名爲的所有Web方法。沒有一種機制可以從我可以存儲供以後使用的方法中「提取」通用的「Web請求對象」。我必須使用它們的名稱和參數明確調用Web方法。這compilcates我的代碼。 我的問題是 - .NET WebServices中是否存在一種機制將Web請求「提取」爲對象,並在稍後使用它?.NET Web服務 - 管理web請求

問候

多米尼克

回答

1

據我所知,.NET生成的代理不會給你想要的Web請求的對象。但是您可以創建一個簡單的代理來存儲請求信息,然後使用.NET代理(或SoapHttpClientProtocol類)發出Web請求。以下是樣本模板代碼:

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); 
     } 
    } 
} 

希望這會給你一個想法。