0

私のC#アプリケーション(.net 4)では、アップロードとダウンロードの合計データサイズをKBで計算したいのですが、コードは次のとおりです。問題は「request.contentLength」が常に-1を返すことです。アップロード データ計算) と「response.contentLength」(ダウンロード データ計算用) は、このデータを計算するための正しいステートメントですか?

private string pageFetch(string url,int requestTimeOut)
    {

        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
        request.Timeout = requestTimeOut;
        if (!Program.proxyType.Equals("None"))
        {
            int iPortNo = 0;
            try
            {
                iPortNo = Int32.Parse(Program.proxyPort);
            }
            catch (Exception ex)
            {
                iPortNo = 0;
            }
            WebProxy objProxy = new WebProxy(Program.proxyAddress, iPortNo);
            if (!Program.proxyUsername.Equals(""))
            {
                objProxy.Credentials = new NetworkCredential(Program.proxyUsername, Program.proxyPassword);
            }
            request.Proxy = objProxy;
        }
        HttpWebResponse response=null;

        try
        {
            response = (HttpWebResponse)request.GetResponse();

        }
        catch (Exception e)
        {

        }


        lock (lockObject)
        {
            if (response.ContentLength>0)
            totalDownload += (response.ContentLength / 1024);
            if(request.ContentLength>0)
            totalUpload += (request.ContentLength/1024);
            Console.WriteLine("Request length**********" + request.ContentLength);
            Console.WriteLine("Up=======" + totalUpload + "Down======" + totalDownload);
        }

        Program.comment("Response Status=" + response.StatusCode);
        string output = "";
        if (response != null)
        {
            if (response.StatusCode == HttpStatusCode.OK)
            {

             // output processing

            }
            else
            {
                response.Close();
            }
        }
       Console.WriteLine("Output=" + output);
        return output;
    }

pageFetch(string url,int requestTimeOut) メソッドは TPL 内で実行されます。

4

1 に答える 1

1

ContentLength プロパティには、応答で返される Content-Length ヘッダーの値が含まれます。応答で Content-Length ヘッダーが設定されていない場合、ContentLength は値 -1 に設定されます。

HttpWebResponse.ContentLength プロパティを参照

于 2012-04-24T06:15:34.307 に答える