簡體   English   中英

.NET Web服務-管理Web請求

[英].NET Web Services - managing web requests

我有一個.NET WeBService項目,另一個項目對此有一個引用。 Visual Studio使用Web服務的所有方法生成一個代理類(SoapHttpClient)。 我使用WebService的項目是.NET CF移動應用程序。 這意味着Internet訪問和WebService並非始終可用。 我需要做的是確保從移動設備到Web服務的所有請求最終都能到達它。 我想通過將對WebService的所有請求排隊在一個工作線程中,該線程連續執行Web請求直到執行成功。 問題在於生成的代理類具有所有已命名的Web方法。 沒有一種機制可以從我可以存儲以供以后使用的方法中“提取”通用的“ Web請求對象”。 我必須使用其名稱和參數顯式調用Web方法。 這編譯了我的代碼。 我的問題是-.NET Web服務中是否有一種機制可以將Web請求“提取”為對象,以后再使用呢?

問候

多米尼克

據我所知,.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);
        }
    }
}

希望這會給您一個想法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM