Asp.net web api WebApi中每个控制器的配置存在问题

Asp.net web api WebApi中每个控制器的配置存在问题,asp.net-web-api,asp.net-web-api2,Asp.net Web Api,Asp.net Web Api2,我正在尝试编写一个自定义控制器配置属性,而配置似乎没有执行,请求没有使用我们的自定义协定解析器,下面是实现IControllerConfiguration的类中的代码 using System; using System.Net.Http.Formatting; using System.Web.Http.Controllers; namespace OurCoolStuff.Api.Common.Attributes { public class SuperAwesomeCustom

我正在尝试编写一个自定义控制器配置属性,而配置似乎没有执行,请求没有使用我们的自定义协定解析器,下面是实现IControllerConfiguration的类中的代码

using System;
using System.Net.Http.Formatting;
using System.Web.Http.Controllers;

namespace OurCoolStuff.Api.Common.Attributes
{
    public class SuperAwesomeCustomConfig: Attribute, IControllerConfiguration
    {
        public void Initialize(HttpControllerSettings controllerSettings, HttpControllerDescriptor controllerDescriptor)
        {
            controllerSettings.Formatters.Clear();
            controllerSettings.Formatters.Add(GetCustomContractResolver());
        }

        private MediaTypeFormatter GetCustomContractResolver()
        {
            var formatter = new JsonMediaTypeFormatter
            {
                SerializerSettings =
                {
                    ContractResolver = new OurSuperCoolCustomContractResolver()
                }
            };
            return formatter;
        }
    }
}
然后我们就简单地使用它,比如:

[SuperAwesomeCustomConfig]
TestController : ApiController{
...Controller methods here
}
我们已经尝试在SuperWesomeCustomConfig类中插入断点,并初始化方法,但它们从未被击中

有两点需要注意: 我们的控制器方法使用
async
返回
Task
,我们还使用unity进行依赖注入

UnityConfig.cs中的unity代码如下所示

public static void RegisterComponents()
        {
            var container = new UnityContainer();
            GlobalConfiguration.Configuration.DependencyResolver = new UnityDependencyResolver(container);
        }

据我所知,这是一个很好的样板。

因此,我们使用的ContractResolver查看的类型是错误的,所以简言之,一切都按预期工作。我应该花更多的时间研究这个问题。linqpad的无耻插件,因为这使我们能够找出自定义ContractResolver的错误。

因此,我们使用的ContractResolver的类型是错误的,所以简而言之,一切都按预期工作。我应该花更多的时间研究这个问题。linqpad的无耻插件,因为这使我们能够找出自定义ContractResolver的错误。

您的依赖项注入相关代码是什么?用Unity代码更新。好的,但我高度怀疑Unity的依赖项注入相关代码中存在的问题,可能您正在尝试在controller中使用那些未向UnityYea注册的服务,我认为问题也不在于Unity。当我使用即时窗口查看加载的格式化程序时,自定义格式化程序不存在,这是我所期望的。只是确认一下。你的依赖项注入相关代码是什么?用Unity代码更新了。好的,但我高度怀疑你的依赖项注入相关代码中有Unity的问题,可能您正在尝试在controller中使用那些未向UnityYea注册的服务,我认为问题也不在于Unity。当我使用即时窗口查看加载的格式化程序时,自定义格式化程序不存在,这是我所期望的。只是确认一下。