我有一个奇怪的问题,我不知道为什么会出现问题:
在客户端,我有这段代码:
HttpResponseMessage response = await _httpClient.PostAsync("http://127.0.0.1:5544/api/Blablabla", new StringContent("test"));
在服务器上,我实现了一个具有此
的自定义InputFormatter public async override Task<InputFormatterResult> ReadRequestBodyAsync(InputFormatterContext context)
{
var request = context.HttpContext.Request;
try
{
using (var reader = new StreamReader(request.Body))
{
var content = await reader.ReadToEndAsync().ConfigureAwait(false);
return await InputFormatterResult.SuccessAsync(content).ConfigureAwait(false);
}
}
catch (Exception e)
{
return await InputFormatterResult.FailureAsync();
}
}
如果我试试这个,就会触发服务器的catch异常,给我一个例外:
远程主机强行关闭现有连接
但是.....
如果在客户端我使PostAsync“同步”执行此操作:
HttpResponseMessage response = _httpClient.PostAsync("http://127.0.0.1:5544/api/Blablabla", new StringContent("test")).Result;
一切正常。
问题是什么???
答案 0 :(得分:0)
好的,我修好了......
问题是,正如你可以想象的那样,调用postasync的函数是异步的,但之前的函数不是,而且我没有为那个函数创建.Wait()。
与asp net core无关,只是来自同步代码的异步代码问题。