WebApi2 中使用Autofac映射会报如下错误:请确保控制器具有无参数的公共构造函数 An error occurred when trying to create a controller of type 'xxxController'. Make sure that the controller has a parameterless public constructor."

示例代码如下:链接:https://pan.baidu.com/s/1Nfs7E6uv7KxPK1U7s8szjw 

大部代码已经写到了文章里了,https://lebang2020.cn/details/2009242wkngv1r.html

请点击捐赠捐赠按钮查看提取码。

推荐文章:

MVC5 WebApi2 使用OWIN管道管理中间件

Owin中间件获取Response body stream

WebApi2 Owin Autofac Demo

报错原因

"请确保控制器具有无参数的公共构造函数",说明 OWIN 管道没有把控制器的创建交给 Autofac,仍用默认的反射激活,遇到带参构造便失败。

解决办法

  • 让 Autofac 接管 Web API 的依赖解析:config.DependencyResolver = new AutofacWebApiDependencyResolver(container)。
  • 注册控制器时必须调用 RegisterApiControllers(Assembly.GetExecutingAssembly())。
  • 确认在 WebApiConfig.Register 之前完成容器构建。
  • 若仍报错,检查是否有重复的 OwinStartup 类或启动项未生效。

相关阅读

参考资料

💰 此内容为付费阅读 请先登录