问题标签 [perwebrequest]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
770 浏览

nhibernate - 在 NHibernate 中设置 PerWebRequest 生活方式

我有一个非常基本的 NHibernate 设置。我没有使用 Castle Widnsor 或任何类似的东西在我的代码中执行 IoC。我想要做的就是将我的 Lifestyle 设置为 PerWebRequest,但如果不返回代码并更新它以使用 IoC 库,我无法弄清楚如何做到这一点。

有没有办法在配置文件中做到这一点?

0 投票
2 回答
2520 浏览

asp.net - Castle Windsor PerWebRequest 生活方式和应用程序_EndRequest

我正在使用 PerWebRequest 生活方式注册一些与 Linq2Sql 相关的组件。我看到它们被创建了,但是在我的全局 Application_EndRequest 方法被调用之前它们被销毁了。这是设计使然吗?有谁知道解决方法?我想在每个请求结束时调用我的 UnitOfWork 对象上的 commit 来 submitchanges() 。除了使用 Global.asax Application_EndResult,我还尝试了具有相同结果的 IHttpModule。

我正在使用城堡 2.0。

这是我使用 PerWebRequest 注册我的东西的方式。我正在创建一个保存在 L2S DataContext 上的 DataCONtextProvider 对象。该对象被注入 UoW。

现在我只是想通过 CommonServiceLocator(CSL 和 Windsor 适配器都是 1.0)从 EndRequest 中拉出 UoW,如下所示:

谢谢,科里

0 投票
1 回答
499 浏览

.net - 使用 PerWebRequest 创建的某些对象在 Web 请求结束时不会被垃圾收集

给定

注册:

web.config 中的正确内容:

使用从 SVN 构建的 Castle 版本。带网页代码:

我知道 ~a() 没有被调用,RedGate 分析器显示 a 没有被收集,对它的引用卡在 AllComponentsReleasePolicy.instance2burden 中。


我不是第一个遇到这个问题的人

http://groups.google.com/group/castle-project-users/browse_thread/thread/bd287dd66b3a9d64/f48d740621508c64?lnk=gst&q=PerWebrequest#f48d740621508c64

0 投票
2 回答
4359 浏览

asp.net-mvc - 城堡 PerRequestLifestyle 无法识别

城堡/温莎的新手,请多多包涵。

我目前正在使用框架System.Web.Mvc.Extensibility并且在其启动代码中,它注册了 HttpContextBase ,如下所示:

我想做的是改变行为并将httpContextBase的生活方式改变为PerWebRequest。

所以我将代码更改为以下内容:

但是,当我这样做时,出现以下错误:

我在 下做过<system.web><system.webServer>但是,我仍然遇到同样的错误。有什么提示吗?

提前致谢。

更新

每个请求添加代码块

在system.web.mvc.extensibility框架中,有一个继承自HttpApplication的类extendedMvc​​Application,在Application_start方法中调用了BootStrapper.Execute()。此方法的实现如下:

如您所见,它遍历 IBootStrapperTask 列表并尝试执行它们。碰巧我有一项任务在我的 mvc 应用程序中注册路由:

您可以看到我需要 getInstance(resolve) 一个 httpcontextbase 对象,以便我可以获取 xml 文件的服务器路径。

0 投票
3 回答
1718 浏览

castle-windsor - Application_Start 中的 Windsor PerWebRequest 解析

我将 HttpContextBase 注入缓存类。HttpContextBase 注册为 PerWebRequest。我在每个 Web 请求上与缓存类进行交互,这工作正常,但我还需要在应用程序启动时初始化缓存。

我知道 PerWebRequest 在 Application_Start 中不起作用:

城堡 PerRequestLifestyle 无法识别

在我的情况下解决此问题的最佳方法是什么?

0 投票
4 回答
3867 浏览

testing - Testing Castle windsor Component with PerWebRequest lifestyle

I'm trying to do some testing with castle windsor involved, in one of my tests I want to check the windsor installers, so I check that the container can resolve my components given its interface.

So far, so good, the problem starts when the component has PerWebRequest lifestyle in its installer, at first it complained about HttpContext.Current is null, having that one solved creating a fake Context in test setup I'm now having this exception in nunit test

System.Exception : Looks like you forgot to register the http module Castle.MicroKernel.Lifestyle.PerWebRequestLifestyleModule Add '' to the section on your web.config. If you're running IIS7 in Integrated Mode you will need to add it to section under

As I'm running this from NUnit, how I can register the module or class in windsor so it works, or how can be mocked, as in this test is not really a web request, just checking that the container resolve the type.

And also this same thing will happen if I make any integration tests with this component outside a real webrequest, is there any way to make this work or really mock a web request so this tests can be run?

Tranks in advance

Fer

0 投票
0 回答
738 浏览

castle - 使用 LifeStyle.PerWebRequest 配置时,Castle 3.0 不会释放 Entity Framework.DbContext 组件

想知道是否有人在使用 Castle Windsor 3.0 时遇到过这种奇怪的行为?我已经为 DbContext 设置了容器配置,使其具有 PerWebRequest 的生活方式,但 Castle 不会在 WebRequest 之后处理组件。它将组件跨 Web 请求保留在 Container 中,就好像它是 Singleton 一样。

显而易见的问题是当 DbContext 中存在数据库错误时,它会阻止所有未来的 CRUD 操作,直到 IIS 重新启动(即手动销毁 DbContext)!正如我们所知,这是不可接受的。

如果 DbContext 被 PerWebRequest 回收,那么当页面重新加载时,其他 CRUD 操作将成功执行,因为我们现在有了一个新的 DbContext。

我的配置如下:

我的 DbContext 类如下:

任何帮助/建议将不胜感激。

谢谢。

0 投票
2 回答
1230 浏览

asp.net - Castle Windsor 3 在多个 Web 请求中保留 PerWebRequest 对象

我有一个 MVC 4 项目,并试图将 PerWebRequest 对象注入我的控制器。但是,似乎没有跨多个请求重新创建对象

这是我的 PerWebRequestObject:

这是我的测试控制器:

为什么这不起作用?请注意,我正在使用 WindsorControllerFactory 并像这样释放控制器:

0 投票
2 回答
338 浏览

.net - 在 Windsor 中将 Pooled Lifestyle 与 PerWebRequest Lifestyle 集成

我有使用实体框架作为 ORM 的 ASP.NET MVC 应用程序。现在我将PerWebRequest生活方式用于 EF ObjectContext

在分析高负载下的应用程序性能时,我发现了 ObjectContext 创建的瓶颈。

我想将ObjectContext的生活方式更改为Pooled,但是有一个问题。

在我的应用程序的遗留部分有服务定位器反模式。因此,每个 Web 请求都可以多次解析 ObjectContext,并且在使用后不会显式释放。

使用PerWebRequest这不是问题,因为ObjectContext实例实例化一次并保证在EndRequest事件上释放。

对于默认的Pooled生活方式,将为每个Resolve方法调用返回不同的ObjectContext实例。但我想在 Web 请求范围内重新使用单个实例。此外,我希望实例在请求结束时自动释放(返回池)(使用PerWebRequestLifestyleModule)。

在我看来,我应该为 Windsor 实现自定义LifestyleManager或自定义IPool。但是我不知道如何将PooledPerWebRequest生活方式结合起来,因为在 Windsor 中缺乏经验。

你能给我一些想法吗?谢谢。

UPD:关于 ObjectContext 的状态和重用原因

有性能原因。ObjectContext 的创建非常昂贵。我正在寻找避免它的方法。我有两种方法来处理 ObjectContext 的有状态性质并重用它:

  • 使用无状态上下文(关闭 ChangeTracking)进行查询。对于命令,请使用另一个实例。
  • 返回池时重置上下文的状态。
0 投票
0 回答
1165 浏览

dependency-injection - 温莎城堡 3.2 中缺少 PerWebRequest 生活方式

我正在使用 Castle Windsor 的 PerWebRequest Lifestyle(版本 3.0.0.4001)。我想将它更新到最新版本(3.2)。在最新版本中,它说

以下是我注册组件的方式,但使用最新版本会引发错误:

我需要添加任何参考吗?或者有人可以建议将哪一种 Castle Windsor Lifestyle 推荐用于 Web 应用程序(用户将其用于日常活动,例如(客户维护))