首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASP.NET核心中PostAsync异常的自定义InputFormatter

ASP.NET核心中PostAsync异常的自定义InputFormatter
EN

Stack Overflow用户
提问于 2018-04-26 01:11:29
回答 1查看 131关注 0票数 0

我有一个奇怪的问题,我不知道为什么会给出问题:

在客户端,我有这样的代码:

代码语言:javascript
复制
 HttpResponseMessage response = await _httpClient.PostAsync("http://127.0.0.1:5544/api/Blablabla", new StringContent("test"));

在服务器上,我实现了一个定制的InputFormatter,它具有以下内容

代码语言:javascript
复制
 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“同步”这样做:

代码语言:javascript
复制
HttpResponseMessage response = _httpClient.PostAsync("http://127.0.0.1:5544/api/Blablabla", new StringContent("test")).Result;

一切正常。

有什么问题吗?

EN

回答 1

Stack Overflow用户

发布于 2018-04-26 15:54:05

好吧,我把它修好了……

问题是,正如您可以想象的那样,调用postasync的函数是异步的,但前面的函数不是异步的,并且我没有对那个函数执行.Wait()。

与asp net core无关,只是同步代码的异步代码问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50027854

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档