System.Net.Http.HttpClient.PostAsync在.net3.5中工作但在4.0中不起作用

时间:2016-08-08 06:17:25

标签: c# asynchronous .net-3.5 httpclient

我有以下代码在.NET 4.0上运行正常。但是当我将目标框架更改为.NET3.5时,它运行时没有任何错误,但没有进行上传。

当调试它从行resp.Result.EnsureSuccessStatusCode();跳过并且从不执​​行下面的行或至少执行catch块时。

(顺便说一句,我已经将System.Net.Http从这里添加到.net 3.5,因为httpclient没有附带.net3.5 - https://www.nuget.org/packages/Rackspace.HttpClient35/1.0.0-beta003

public string pp(string bb,string code,string kb)
        {
            try
            {
                HttpClient httpClient = new HttpClient();
                MultipartFormDataContent formx = new MultipartFormDataContent();

                formx.Add(new StringContent(code), "fn");
                var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(kb);
                string kbb= System.Convert.ToBase64String(plainTextBytes);
                formx.Add(new StringContent(kbb), "kb");

                formx.Add(new StringContent(bb), "img");  

                var resp = httpClient.PostAsync("http://s.*****.com/put.php", formx);

                resp.Result.EnsureSuccessStatusCode();
                httpClient.Dispose();
                string rep = resp.Result.Content.ReadAsStringAsync().Result;
                return rep;
            }
            catch (Exception ee) {
                return "no";
            }
        }

2 个答案:

答案 0 :(得分:0)

我认为postasync适用于新版本。你可以找到他们需要框架至少4.0的文件

了解更多详情请点击以下链接

https://msdn.microsoft.com/en-us/library/gg597391.aspx

答案 1 :(得分:0)

HttpClient意味着在版本.Net 4.0之前没有引入System.Net.Http.HttpClient。因此它甚至不应该编译。

您的项目可能未正确重建(clean \ build),因为编译器不允许您构建项目。