我试图将值从控制器传递到另一个域中的另一个控制器.我将数据添加到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)
你不应该使用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)
| 归档时间: |
|
| 查看次数: |
8769 次 |
| 最近记录: |