Asp.net web api WebApi中每个控制器的配置存在问题
我正在尝试编写一个自定义控制器配置属性,而配置似乎没有执行,请求没有使用我们的自定义协定解析器,下面是实现IControllerConfiguration的类中的代码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
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。当我使用即时窗口查看加载的格式化程序时,自定义格式化程序不存在,这是我所期望的。只是确认一下。