System.Net.Http.HttpRequestException仅在首次调用时将内容复制到流中时出错

时间:2019-04-03 10:01:23

标签: c# .net httpclient

我正在调用本地运行的ASP.Net Web api,并且遇到了仅在我的应用启动后才发生的问题-只有第一次调用在System.Net.Http.HttpRequestException上失败。我正在使用Windows身份验证。 第一次调用永远不会到达我的api,并且客户端会抛出异常。调用PostAsync时。在第一个电话之后进行的任何后续呼叫都可以。

StackTrace:

  

System.Net.Http.HttpRequestException:将内容复制到流时出错。 ---> System.IO.IOException:读取操作失败,请参阅内部异常。 ---> System.Net.WebException:请求被中止:连接意外关闭。      在System.Net.ConnectStream.BeginRead(Byte []缓冲区,Int32偏移量,Int32大小,AsyncCallback回调,对象状态)      在System.Net.Http.HttpClientHandler.WebExceptionWrapperStream.BeginRead(字节[]缓冲区,Int32偏移量,Int32计数,AsyncCallback回调,对象状态)      ---内部异常堆栈跟踪的结尾---      在System.Net.Http.HttpClientHandler.WebExceptionWrapperStream.BeginRead(字节[]缓冲区,Int32偏移量,Int32计数,AsyncCallback回调,对象状态)      在System.Net.Http.StreamToStreamCopy.StartRead()      ---内部异常堆栈跟踪的结尾---      在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)      在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)      在System.Runtime.CompilerServices.TaskAwaiter`1.GetResult(

代码:

        {
            var exampleString = "example json as string";
            var content = new StringContent(exampleString, Encoding.UTF8, "application/json");
            HttpResponseMessage response;
            var handler = new HttpClientHandler { UseDefaultCredentials = true };
            using (var httpClient = new HttpClient(handler))
            {
                response = httpClient.PostAsync("http://localhost:5099/api/test", content).GetAwaiter().GetResult();
            }
        }
        catch (Exception ex)
        {
            // exception caught here on first call
        }

上面调用的api方法

        [HttpPost]
        [Authorize(Policy = nameof(Permissions.MyPermission))]
        public ActionResult Post([FromBody]string payload)
        {      
        }

我不确定这里发生了什么。我的exampleString是有效的JSON字符串,可用于任何后续调用。这仅在我的应用程序中使用HttpClient的地方。是什么原因-“将内容复制到流时出错”?

我的目标是客户端上的.Net Framework 4.5。

谢谢

0 个答案:

没有答案