c# - 内容协商期间 HttpControllerContext.Configuration 有时为 null

标签 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.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()

最佳答案

将 header 添加到 BadRequestErrorMessageResult 时,我的测试中出现了类似的错误。该修复仅需要初始化 Controller 的配置。 ...然后初始化请求。

所以我的测试设置最终看起来像这样

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();
    }
}

希望有帮助。

关于c# - 内容协商期间 HttpControllerContext.Configuration 有时为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55480264/

相关文章:

c# - asp.NET 2.0 网站无法访问 App_Code 中的类

c# - WCF XmlDictionaryReaderQuotas 不存在

c# - 如何更改在 C# 中右键单击富文本框时显示的内容?

c# - Web API2 代理不重定向请求

html - 如何将二级菜单推到主水平导航栏下方?

web-services - Ajax请求期间收到 "no type was found that matches the controller named"错误消息

c# - 在同一解决方案中为 CurrentCulture 获取两个不同的值

c# - 使用 SQL Server Compact 与专用 SQL Server 数据库的缺点

asp.net-mvc - 从 mvc Controller 使用 web api 时返回 json 结果

asp.net-web-api - 从数据存储实现动态 OAuthBearerServerOptions AccessTokenExpireTimeSpan 值