C# HttpControllerContext.Configuration在内容协商期间有时为空

C# HttpControllerContext.Configuration在内容协商期间有时为空,c#,asp.net-web-api,C#,Asp.net Web Api,我们正在设置ASP.NET 4.6.2 Web Api主机,并注意到一些请求由于以下错误而失败: HttpControllerContext.Configuration must not be null. 我一直无法重现这个问题,想问是否有人能把我引向正确的方向 这是堆栈跟踪: [0] System.InvalidOperationException "HttpControllerContext.Configuration must not be null." at System.Web

我们正在设置ASP.NET 4.6.2 Web Api主机,并注意到一些请求由于以下错误而失败:

HttpControllerContext.Configuration must not be null.
我一直无法重现这个问题,想问是否有人能把我引向正确的方向

这是堆栈跟踪:

[0] System.InvalidOperationException "HttpControllerContext.Configuration must not be null." at System.Web.Http.Results.NegotiatedContentResult`1.ApiControllerDependencyProvider.EnsureResolved() at System.Web.Http.Results.NegotiatedContentResult`1.ApiControllerDependencyProvider.get_ContentNegotiator() at System.Web.Http.Results.BadRequestErrorMessageResult.Execute() at System.Web.Http.Results.BadRequestErrorMessageResult.ExecuteAsync(CancellationToken cancellationToken) at System.Web.Http.Controllers.ApiControllerActionInvoker.d__1.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Web.Http.Dispatcher.HttpControllerDispatcher.d__15.MoveNext() [0]System.InvalidOperationException“HttpControllerContext.Configuration不能为空。” 在System.Web.Http.Results.NegotiatedContentResult`1.ApiControllerDependencyProvider.EnsurereResolved()中 在System.Web.Http.Results.NegotiatedContentResult`1.ApiControllerDependencyProvider.get_ContentCongregator()中 在System.Web.Http.Results.BadRequestErrorMessageResult.Execute()中 位于System.Web.Http.Results.BadRequestErrorMessageResult.ExecuteAsync(CancellationToken CancellationToken) 在System.Web.Http.Controllers.ApiControllerActionInvoker.d_u1.MoveNext()中 ---来自引发异常的上一个位置的堆栈结束跟踪--- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务) 在System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中 在System.Web.Http.Dispatcher.HttpControllerDispatcher.d_u15.MoveNext()中
在向BadRequestErrorMessageResult添加头时,我的测试中也发生了类似的错误。修复程序只需要初始化控制器的配置。 …然后初始化请求

所以我的测试设置看起来像

public class FooControllerTest
{
    private FooController _sut;

    [Setup]
    public void Setup()
    {
        _sut = new FooController();
        _sut.Configuration = new System.Web.Http.HttpConfiguration();
        _sut.Request = new System.Net.Http.HttpRequestMessage();
    }
}

希望这会有所帮助。

您的代码需要等待整个响应返回。使用异步方法通常在获取所有数据之前开始处理,这可能会导致空值。对我来说,这会返回InternalServerError。当我调试时,它工作正常。