asp.net-web-api – SimpleInjector RegisterWebApiRequest vs R
最新版本的SimpleInjector引入了MVC和WebApi之间的区别.两个请求注册是否为同一个东西的别名?或者是否存在潜在的差异?
谢谢 解决方法
SimpleInjector 2.5中的生活方式和范围实现WebRequest和WebApiRequest基于不同的技术.
WebApiRequestLifestyle派生自ExecutionContextScopeLifestyle,它在IIS内部和外部都能很好地工作.即它可以在没有HttpContext.Current的自托管WebAPI项目中运行. WebApiRequestLifestyle使用的范围是ExecutionContextScope.顾名思义,ExecutionContextScope在逻辑调用上下文中注册自身,并在线程之间进行异步操作(例如,在等待不同线程之后的延续仍然可以访问范围,无论ConfigureAwait()是使用true还是false). 相反,WebRequestLifestyle的实例存储在HttpContext中. HttpContext可以在IIS中托管时与WebAPI一起使用,但必须小心,因为它不会始终与执行上下文一起流动,因为当前的HttpContext存储在IllogicalCallContext中(参见Understanding SynchronizationContext in ASP.NET).如果对ConfigureAwait(false)使用await,则只要async-op不同步执行,延续就可能会丢失对原始HttpContext的跟踪.这样做的直接影响是,不再可能使用WebRequestLifestyle从容器中解析以前创建的服务的实例(例如,在有权访问容器的工厂中) – 并且因为HttpContext.Current而抛出异常将是null. 我建议您使用WebApiRequestLifestyle进行“按Web API请求”的服务,最明显的例子是注入WebAPI控制器的服务. WebApiRequestLifestyle具有以下优点: > WebAPI控制器可以在IIS之外使用(例如,在自托管项目中) 查看Stephen Toub关于difference between (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 如果会话正在使用,单个asp.net用户可以一次使用多个请求吗?
- asp.net – 如何在SQL Server 2008中的单个存储过程中编写两
- asp.net – 防止将父web.config继承到IIS 7.5上的子应用程序
- asp.net – 如何捕获异常形式ObjectDataSource.Updata()
- asp.net-mvc-4 – 如何在Durandal中使用cshtml文件?
- asp.net – 是果园还是Umbraco MVC?
- asp.net-mvc – 在ASP.NET MVC 5应用程序中启用SSL会导致Op
- ASP.NET C#中的自定义控件
- asp.net-mvc – 仍然支持MetaWeblog API吗?
- asp.net-mvc-4 – mvc 4捆绑和缩小 – 当我刷新时没有获得3