我正在调用本地运行的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。
谢谢