我已经设置了一个mvc5.2 webapi项目并添加了autofac和owin的所有依赖项。
在我的启动课程中,我有以下代码,这些代码直接来自文档Autofac Owin Doco
我所做的唯一改变是RegisterApiTypes(builder);
public class Startup
{
public void Configuration(IAppBuilder app)
{
var builder = new ContainerBuilder();
RegisterApiTypes(builder);
// STANDARD WEB API SETUP:
// Get your HttpConfiguration. In OWIN, you'll create one
// rather than using GlobalConfiguration.
var config = new HttpConfiguration();
// Register your Web API controllers.
builder.RegisterApiControllers(Assembly.GetExecutingAssembly());
// Run other optional steps, like registering filters,
// per-controller-type services, etc., then set the dependency resolver
// to be Autofac.
var container = builder.Build();
config.DependencyResolver = new AutofacWebApiDependencyResolver(container);
// OWIN WEB API SETUP:
// Register the Autofac middleware FIRST, then the Autofac Web API middleware,
// and finally the standard Web API middleware.
app.UseAutofacMiddleware(container);
app.UseAutofacWebApi(config);
app.UseWebApi(config);
}
private static void RegisterApiTypes(ContainerBuilder builder)
{
builder.RegisterType<Logger>()
.As<ILogger>()
.InstancePerRequest();
builder.RegisterType<EmailService>()
.As<IEmailService>()
.InstancePerRequest();
}
}
调用启动类并且没有任何问题但是当我尝试点击控制器时我得到了
尝试创建“MyController”类型的控制器时发生错误。确保控制器具有无参数的公共构造函数。
我应该以不同的方式设置Startup.cs吗?