加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 在同一个项目的MVC和Web API中使用InstancePerHttpRe

发布时间:2020-12-16 06:33:14 所属栏目:asp.Net 来源:网络整理
导读:我的应用程序与VS 2013的Web API默认模板完全一样.基本上,Web API 2用于API,MVC 5用于文档. 我正在使用Autofac,到目前为止它运行良好.以下是我所拥有的精简版 – var builder = new ContainerBuilder();var assemblies = Assembly.GetExecutingAssembly();bu
我的应用程序与VS 2013的Web API默认模板完全一样.基本上,Web API 2用于API,MVC 5用于文档.

我正在使用Autofac,到目前为止它运行良好.以下是我所拥有的精简版 –

var builder = new ContainerBuilder();

var assemblies = Assembly.GetExecutingAssembly();
builder.RegisterControllers(assemblies);
builder.RegisterApiControllers(assemblies);

builder.RegisterType<MyService>().As<IMyService>()
   .InstancePerHttpRequest();

var apiResolver = new AutofacWebApiDependencyResolver(container);
GlobalConfiguration.Configuration.DependencyResolver = apiResolver;

var mvcResolver = new AutofacDependencyResolver(container);
DependencyResolver.SetResolver(mvcResolver);

到目前为止,InstancePerHttpRequest适用于MVC和Web API.

我想知道使用InstancePerHttpRequest而不是InstancePerApiRequest的缺点,所以如果我将来遇到问题,我不会感到惊讶.

我找到了类似的question,但它没有回答我的问题.

注意:我在SO中找到了一些答案,说我们不应该在同一个项目中混合使用MVC和Web API.对我来说,我只需要很少的MVC网页来获取文档,所以我不想创建新的MVC项目.

提前致谢!

解决方法

现在,InstancePerApiRequest和InstancePerHttpRequest方法完全相同 – 使用公共生命周期范围“name”注册InstancePerLifetimeScope.它实际上是InstancePerMatchingLifetimeScope(“AutofacWebRequest”).

请求范围在Web表单,WebAPI和MVC集成中命名相同,因此它们都是可互换的.这是故意的.但是,由于挑战在于你可以混合搭配所有这些,或者只使用一个,我们必须为每种技术提供“相同的东西”.在论坛上有一个关于创建某种中央/基础“网络集成”库的讨论,该库在所有ASP.NET内容中都很常见,以消除混淆,但它将是一个突破性的变化,所以它不会发生一段时间.

目前,您可以安全地使用这两个扩展名.

请注意,其他扩展(例如,InstancePerApiControllerType)执行不同的操作,因此它只是可互换的“请求生命周期范围注册扩展”.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读