我遇到了麻烦,我不知道为什么,它一定是我做错了。我不得不重写以使其正常工作,但它闻起来有点不对劲,但它确实有效。
所以这是我首先尝试的,它不起作用,因为返回了500的状态代码,但这是因为它没有等待响应,我需要它等待
[HttpPost]
public async Task<JsonResult> Booking(string model)
{
//do some bits.
var a = new JavaScriptSerializer().Serialize(e);
var booking = new HttpClient();
HttpContent content = new StringContent(a,Encoding.UTF8);
content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
HttpResponseMessage response = await booking.PostAsync("https://webapi.domain.com/Booking/Post", content);
var aa = response.StatusCode //500 Internal Error
}
所以我重写了
[HttpPost]
public async Task<JsonResult> Booking(string model)
{
//do some bits.
var a = new JavaScriptSerializer().Serialize(e);
var booking = new HttpClient();
HttpContent content = new StringContent(a,Encoding.UTF8);
content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
HttpResponseMessage response = await booking.PostAsync("https://webapi.domain.com/Booking/Post", content);
var t = new Stopwatch();
while (response.StatusCode ==HttpStatusCode.InternalServerError)
{
t.Start();
var zzzz = response.ReasonPhrase;
if (t.ElapsedMilliseconds >10000)
{
response.StatusCode = HttpStatusCode.RequestTimeout;
t.Stop();
}
}
var aa = response.StatusCode //201 Created
}
这样可以让我回到201岁,丑陋,但是有谁能告诉我并告诉我我做错了什么?
答案 0 :(得分:1)
服务器有一个与时间相关的错误。当你使用调试器给它足够的时间来避免崩溃时,它就会消失。
在异步操作仍处于挂起状态时完成异步模块或处理程序
看起来像是异步的东西。
客户端没有错,while (response.StatusCode ==HttpStatusCode.InternalServerError)
循环没有任何作用。它甚至不会改变服务器的时间。您对调试器的使用可能就是这样做的,这两种效果在您的解释中是混淆的。
修复服务器,现在您知道要查找的位置。