1
我想写一个自定义控制器配置属性,并且配置似乎并没有采取,请求没有使用我们的自定义合约解析器,这里是我们的代码看起来像在实现IControllerConfiguration的类中。WebApi中的每个控制器配置的问题
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
}
我们试图插入SuperAwesomeCustomConfig类的内部断点,并初始化方法,但他们从来没有被击中。
需要注意的两件事: 我们的控制器方法返回Task<>
与async
,我们也使用统一进行依赖注入。
我们的统一代码看起来像这样在UnityConfig.cs
public static void RegisterComponents()
{
var container = new UnityContainer();
GlobalConfiguration.Configuration.DependencyResolver = new UnityDependencyResolver(container);
}
据我可以告诉这是相当样板。
什么是你的依赖注入相关的代码? –
已更新为Unity代码。 –
好吧,但我非常怀疑问题是在你的依赖注入相关的代码与Unity,可能是你尝试使用这些服务的控制器,这是不是与Unity注册 –