Autofac,WebAPI和媒体格式化程序

时间:2013-09-11 15:50:56

标签: asp.net-web-api autofac

我需要一些帮助。我正在尝试使用Autofac来获取自定义媒体格式化程序所需的一些依赖项。我跟着Wiki,但有点混乱。我正在尝试为媒体格式化程序使用属性注入,因为它需要在全局配置中注册。

代码:

public class UserMediaFormatter : JsonMediaTypeFormatter
{
    public UsersRepository repository { get; set; }
}

 public class WebApiApplication : System.Web.HttpApplication
 {
    GlobalConfiguration.Configuration.Formatters.Insert(2, new UserMediaFormatter());
    builder.RegisterType(typeof(UserMediaFormatter)).PropertiesAutowired()
               .As<MediaTypeFormatter>()
               .InstancePerApiControllerType(typeof (UsersController));

 }

 [AutofacControllerConfiguration]
 public class UsersController : ApiController
 {
 }

1 个答案:

答案 0 :(得分:1)

如果您想让Autofac将自定义格式化程序添加到标记的控制器,那么您无需将其添加到GlobalConfiguration.Configuration.Formatters,因为它会使您的格式化程序全局可用,并且它会阻止Autofac在其上注入属性

请删除GlobalConfiguration.Configuration.Formatters.Insert来电

并使用以下确切语法注册格式化程序:

builder.Register<MediaTypeFormatter>(c => new UserMediaFormatter())
       .PropertiesAutowired()
       .InstancePerApiControllerType(typeof(UsersController));