WebClient - UploadValues:获取状态响应

loc*_*ies 2 c# webclient

我试图将值从控制器传递到另一个域中的另一个控制器.我将数据添加到NameValueCollection并将其传递给另一个控制器[httppost]方法,并将接收到的数据映射到与我传递的模型相同的模型.

目前我通过同时打开VS的两个实例在本地运行它.当两个VS都打开时,值正确传递并且信息正确写入db并且我收到类似"{byte [0]}"的响应.现在,当我尝试停止目标控制器项目并尝试提交数据时,它不会工作但仍然得到与"{byte [0]}"相同的响应.有人可以帮我在这种情况下如何返回响应命令.有没有办法了解UploadValues已完成或未完成.

.........
.........

NameValueCollection resumeDetails = new NameValueCollection(); 
resumeDetails.Add("FirstName", "KRIZTE");

byte[] res = this.Post(ConfigurationManager.AppSettings["RedirectionUrl"].ToString(), resumeDetails);

return View("Index");
}

public byte[] Post(string uri, NameValueCollection resumeDetails)
{
    byte[] response = null;
    WebClient client = new WebClient();
    response = client.UploadValues(uri, resumeDetails);
    return response;
}
Run Code Online (Sandbox Code Playgroud)

SHM*_*SHM 7

你不应该使用WebClient因为这样的问题.

Microsoft将HttpClient类实现为更新的API,它具有以下优点:

HttpClient是最新的API,它具有以下优点

有一个很好的异步编程模型

1-由Henrik F Nielson工作,他基本上是HTTP的发明者之一,他设计了API,因此您可以轻松地遵循HTTP标准,例如生成符合标准的标头

2-位于.Net框架4.5中,因此它对可预见的未来有一定程度的支持

如果你想在其他平台上使用它,那么3-还有库的xcopyable/portable-framework版本 - .Net 4.0,Windows Phone等.

所以我要告诉你一个使用的例子HttpClient:

var uri = "http://google.com";

var client = new HttpClient();
try
{
   var values = new List<KeyValuePair<string, string>>();

   // add values to data for post
   values.Add(new KeyValuePair<string, string>("FirstName", "KRITZTE"));
   FormUrlEncodedContent content = new FormUrlEncodedContent(values);

   // Post data
   var result = client.PostAsync(uri, content).Result;

   // Access content as stream which you can read into some string
   Console.WriteLine(result.Content);

   // Access the result status code
   Console.WriteLine(result.StatusCode);
}
catch(AggregateException ex)
{
    // get all possible exceptions which are thrown
    foreach (var item in ex.Flatten().InnerExceptions)
    {
        Console.WriteLine(item.Message);
    }
}
Run Code Online (Sandbox Code Playgroud)