0

在我的 MVC Web 应用程序中,我收到以下错误:

无法创建请求生命周期范围,因为 HttpContext 不可用

当我用谷歌搜索时,我发现一个解决方案是升级我的autofac.Mvc dll,但我只使用autofac dllAutofac.Integration.Mvc dll等等,我找不到任何 dll,autofac.MVC 我是否缺少任何 dll?

Autofac, Autofac.MVC, Autofac.Integration.Mvcdll有什么区别?

4

2 回答 2

2

关于 MVC 集成的文档可能会对您有所帮助,但让我也回答您的问题。

首先,很高兴了解NuGet 包DLL(也称为程序集)之间存在差异。很多时候,NuGet 包中的程序集名称与包相同,但有时内部程序集的名称不同。(有时一个 NuGet 包有多个程序集。)

所以,回答你的问题:

NuGet 包程序集内部用途
------------- --------------- ---------- ---------------
Autofac Autofac.dll 核心 Autofac
Autofac.Mvc5 Autofac.Integration.Mvc.dll ASP.NET MVC 5 集成

因此,当您看到需要更新 MVC 集成时,这意味着您需要最新版本的 Autofac.Mvc5 NuGet 包。

于 2018-04-23T15:29:41.757 回答
0

当您将 autofac 集成到与 autofac 相同的 mvc 应用程序时,将使用 Autofac.mvc。当您为 WebAPI 的应用程序集成 autofac 时使用的 WebAPI。MVC 集成为控制器、模型绑定器、动作过滤器和视图提供依赖注入集成。它还增加了每个请求的生命周期支持。

因为 RegisterModelBinders() 扩展方法使用程序集扫描来添加模型绑定器,您需要指定要注册的模型绑定器(IModelBinder 实现)的类型。这是通过使用 Autofac.Integration.Mvc.ModelBinderTypeAttribute 来完成

Autofac 允许您注入构造函数参数以及属性和方法注入

因此,我们需要所有三个 dll 来构建 autofac 并在 mvc 应用程序中运行。

如果您需要对此进一步澄清,请告诉我。

谢谢!!

于 2018-04-23T18:43:07.840 回答