使用swagger运行Web API核心集成测试时出错

使用swagger运行Web API核心集成测试时出错,swagger,integration-testing,asp.net-core-webapi,azure-keyvault,Swagger,Integration Testing,Asp.net Core Webapi,Azure Keyvault,我在为一种方法执行集成测试以在dynamics crm中发布数据时遇到以下错误。这是我第一次编写集成测试,其中我的项目是用于招摇过市的web api和一些azure资源,如key vault、active directory 在执行Get调用时,它似乎运行良好,所有步骤都已执行,并且也得到了结果。但对于Post调用,我可以看到调用成功,并且插入了最新调用的数据库记录,但在从PostAsync方法将Execution point返回到集成测试时,它在这两者之间失败 以下是错误: Message:

我在为一种方法执行集成测试以在dynamics crm中发布数据时遇到以下错误。这是我第一次编写集成测试,其中我的项目是用于招摇过市的web api和一些azure资源,如key vault、active directory

在执行Get调用时,它似乎运行良好,所有步骤都已执行,并且也得到了结果。但对于Post调用,我可以看到调用成功,并且插入了最新调用的数据库记录,但在从PostAsync方法将Execution point返回到集成测试时,它在这两者之间失败

以下是错误:

 Message: 
    System.IO.IOException : The request was aborted or the pipeline has finished
  Stack Trace: 
    ResponseStream.CheckNotComplete()
    ResponseStream.WriteAsync(Byte[] buffer, Int32 offset, Int32 count, CancellationToken cancellationToken)
    ErrorHandller.InvokeAsync(HttpContext context)
    AuthenticationMiddleware.Invoke(HttpContext context)
    StaticFileMiddleware.Invoke(HttpContext context)
    SwaggerUIMiddleware.Invoke(HttpContext httpContext)
    SwaggerMiddleware.Invoke(HttpContext httpContext, ISwaggerProvider swaggerProvider)
    CorrelationIdMiddleware.Invoke(HttpContext context, ICorrelationContextFactory correlationContextFactory)
    <<SendAsync>b__0>d.MoveNext()
    --- End of stack trace from previous location where exception was thrown ---
    ClientHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
    HttpClient.FinishSendAsyncBuffered(Task`1 sendTask, HttpRequestMessage request, CancellationTokenSource cts, Boolean disposeCts)
    GeoIntegrationTest.Test_AddState() line 72
    --- End of stack trace from previous location where exception was thrown ---
消息:
System.IO.IOException:请求已中止或管道已完成
堆栈跟踪:
ResponseStream.CheckNotComplete()
ResponseStream.WriteAsync(字节[]缓冲区、Int32偏移量、Int32计数、CancellationToken CancellationToken)
ErrorHandler.InvokeAsync(HttpContext上下文)
AuthenticationMiddleware.Invoke(HttpContext上下文)
StaticFileMiddleware.Invoke(HttpContext上下文)
SwaggerUIMiddleware.Invoke(HttpContext HttpContext)
调用(HttpContext HttpContext,ISwaggerProvider swaggerProvider)
调用(HttpContext上下文,ICorrelationContextFactory correlationContextFactory)
d、 MoveNext()
---来自引发异常的上一个位置的堆栈结束跟踪---
SendAsync(HttpRequestMessage请求,CancellationToken CancellationToken)
HttpClient.FinishSendAsyncBuffered(任务'1 sendTask,HttpRequestMessage请求,CancellationTokenSource cts,布尔处理)
GeoIntegrationTest.Test\u AddState()第72行
---来自引发异常的上一个位置的堆栈结束跟踪---
代码如下所示

public async Task Test_AddState()
        {
            try
            {
                var data = new StateRequestModel
                {
                        StateCode = "AL",
                        Name ="Alabama",
                    }
                };
                ByteArrayContent byteContent = BuildRequestObject(data);
                var response = await httpClient.PostAsync("api/Geo/AddState", byteContent);
                var result = response?.Content.ReadAsStringAsync().Result;
                var addStateReposne = (ResponseModel<List<string>>) JsonConvert.DeserializeObject(result);
                Assert.NotNull(result);
                Assert.Equal(HttpStatusCode.OK, response.StatusCode);
            }
            catch (Exception ex)
            {
                throw;
            }

        }
公共异步任务测试\u AddState()
{
尝试
{
var data=新的StateRequestModel
{
StateCode=“AL”,
Name=“阿拉巴马州”,
}
};
ByteArrayContent byteContent=BuildRequestObject(数据);
var response=wait-httpClient.PostAsync(“api/Geo/AddState”,字节内容);
var result=response?.Content.ReadAsStringAsync().result;
var addStateReposne=(ResponseModel)JsonConvert.DeserializeObject(结果);
Assert.NotNull(结果);
Assert.Equal(HttpStatusCode.OK,response.StatusCode);
}
捕获(例外情况除外)
{
投掷;
}
}

请帮助我解决此问题,并建议我是否可以提高代码质量。

因此,我只能自己解决它。问题在于超时是由于某个长时间运行的进程超过了HttpClient对象的默认超时

client.Timeout=System.TimeSpan.FromMinutes(5)

谢谢大家