问题标签 [castle-windsor-3]

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 回答
2743 浏览

scope - 如何为温莎城堡的特定自定义范围生活方式“开始范围”?

我创建了一个自定义范围访问器(它只返回 DefaultLifetimeScope),以便能够添加自定义范围的生活方式。然后将该组件注册为

但是,我不知道如何实际开始新的 CustomScope 范围/生命周期。该文档显示使用

但我的目标是创建/开始/启动特定范围,而不是通用LifestyleScoped()注册。新范围应该只影响显式注册到 CustomScope 的组件;不是针对其他范围生活方式注册的通用范围组件或组件。

开始(我的自定义范围)范围/生命周期的过程是什么?

请链接到相关文档;正如我所问的,因为我无法轻易找到它。该代码使用的是温莎城堡 3.3。


背景:

我来自 Autofac,正在寻找相当于每个匹配生命周期范围的实例来在 EF 上下文上建立 UoW。“每个请求”可能有多个 UoW,并且不同的存储库可能有不同的 UoW - 我还希望将来支持嵌套。

虽然有许多文章谈论创建 UoW 模式,但它们 [都] 与 HTTP 或 WFC 请求等某些上下文相关联(错误地,IMOHO)——这不是这个问题的主题。我对如何启动自定义范围特别感兴趣,该范围通过调用图向下流动并“存在于” using 块中。


笔记:

BoundTo()LifestyleBoundTo()/ LifestyleBoundToNearest())生活方式对对象图起作用(并且需要更改类型),并且切换到对象图严格来说并不是这个问题的解决方案/答案。但是,如果可以为他们提供一个好的案例..

0 投票
1 回答
136 浏览

property-injection - 温莎城堡:财产注入

我实现了一个派生自ExtendedMembershipProvider的CustomMembershipProviderIUserService是 CustomMembershipProvider 的依赖,它将用于验证给定的凭据。这将在 Web.Config 中进行配置;

无法通过构造函数注入IUserService实现,因为CustomMembershipProvider需要无参数构造函数。

于是想到了引入属性注入。我将 IUserService 作为 CustomMembershipProvider 的公共属性。

我只为此注册编写了一个单独的安装程序

这不起作用,并且在调用 ValidateUser 时UserService始终为 NULL。

我尝试了贡献者;

并在我引导容器的地方注册贡献者。

请让我知道如何注入 CustomMembershipProvider 的 IUserService属性

0 投票
1 回答
941 浏览

castle-windsor - 温莎城堡生活方式问题

我正在实现hangFire,它是我项目中的一个作业调度库。

我面临与此链接中相同的问题

但是,替换后LifestylePerWebRequest()HybridPerWebRequestTransient()仍然收到相同的错误消息:

HttpContext.Current 为空。PerWebRequestLifestyle 只能在 ASP.Net 中使用

这是我的依赖安装程序的几行:

这是温莎控制器工厂的控制器安装程序

如果需要任何其他信息,请告诉我。

0 投票
2 回答
899 浏览

castle-windsor - Castle Windsor:按惯例注册,开放仿制药

我有一个这样的界面:

我有一个像这样的基类:

我有这样的课:

没有约定,我成功注册如下:

我可以像这样成功地解析一个对象:

但是,当尝试像这样按约定注册时:

我无法像上面那样解决。是什么赋予了?

0 投票
1 回答
304 浏览

interceptor - 从 Castle Windsor 拦截器获取方法的自定义属性

我正在尝试访问应用于城堡拦截器中的方法的自定义属性,但方法 Attribute.GetCustomAttribute() 返回 null。

我怎样才能得到“我的属性”?

PS我正在使用Castle.Core 3.3.3

0 投票
4 回答
661 浏览

inversion-of-control - Castle Windsor,覆盖公约注册的组件

我刚开始第一次使用 Castle Windsor ( 3.3.0),但我卡在了基于约定的注册上。

我想尽可能按名称约定(IDummyService-> DummyService)注册:

...但当然能够稍微更改一些刚刚注册的组件(更改生命周期管理、构造函数参数等)

因为我想让注册尽可能简单,所以我想避免复杂的条件。我发现的唯一解决方案很简单 - 将自定义内容移动到名称约定之上:

我现在的问题是,这是解决我注册问题的正确方法吗?我可以看到温莎城堡在这方面非常强大,并且宁愿正确解决我的任务,不幸的是没有看到太多现实世界的例子。

0 投票
0 回答
148 浏览

dependency-injection - 多个 MVC 项目中的 Sitecore 8.1 MVC 城堡 winsdor 问题

我已经使用 Sitecore 8.1 MVC、Castle Windsor 和 glass mapper v3.5 实现了一种解决方案。在这个解决方案中,我们有两个 MVC 项目,但它可能包含多个网站(Glass_Sample、Glass_Sample_1 等)

Glass_Global:这就是为什么在这个项目中实现了全局/通用功能(城堡温莎)并被其他网站(Glass_Sample)使用。我把城堡温莎的实现放在这个项目中:

在此处输入图像描述

并将 Glass_Global.config 文件放入 App_Config/Include 文件夹

Glass_Sample:这将是此解决方案中启动的第一个网站。我已在此项目中添加 CastleWindsorConfig.cs 文件

在此处输入图像描述

我在此 Glass_Sample 网站的主页布局上使用控制器渲染,但是当我浏览该网站时出现以下错误:

在此处输入图像描述

我错过了什么吗?

我把我的控制器,接口放在区域文件夹中这是这个错误的根本原因吗?

在此处输入图像描述

有什么建议吗?

附言

它现在可以工作了。实际上我创建了一个新的 Glass_Sample.config 文件并放在 Glass_Sample/App_Config/Include 文件夹中:

现在这个解决方案可能包含多个网站。我应该按照以下方法在这个解决方案中添加一个新网站:

  1. 将在此解决方案中添加一个新的 MVC 项目并添加所需的站点核心程序集

  2. 转到 IIS,添加一个新应用程序 ( GlassSampleSite1 ) 并从GlassSample网站文件夹中复制 sitecore 文件夹/dll

3.转到解决方案并右键单击GlassSampleSite1项目并将发布目标设置为新创建的实例GlassSampleSite1/Website文件夹并进行发布。

这行得通吗?

0 投票
1 回答
179 浏览

castle-windsor-3 - 在给定接口祖先的情况下,如何向 Castle Windsor 注册默认接口?

我有以下内容:

我希望能够自动让 Castle Windsor 找到所有配对IDescendantXDescendantX而无需我手动指定它们。这可能吗?

我试过了:

但这没有找到默认接口。(我在用正确的术语来表达我的问题时遇到了麻烦,所以找不到关于 SO 的话题已经回答了这个问题,抱歉,如果它是重复的......)

0 投票
1 回答
128 浏览

c#-4.0 - Castle Windsor 拦截器 - 添加 HTTP 标头

我正在尝试添加一个拦截器来添加一个简单的 HTTP 标头,有没有使用 IInvocation 的好方法?

我环顾四周,看不到任何例子,或者通过 WcfPolicy。我正在尝试做的一个例子如下..

干杯,

杰米

0 投票
1 回答
32 浏览

c# - 使用 PerWebRequest 组件的瞬态组件,PerWebRequest 组件何时超出范围?

我试图理解一个有点复杂的场景。基本上,如果我的课程X在 Castle 中注册为LifestyleTransient()

X看起来像:

Y因此注册:

看起来像:

如果我创建它的一个X实例Release

什么时候Dispose被召唤Y?是在网络请求结束时还是 x 的实例被释放时?有没有Dispose被调用?!


注意:这是一个有点复杂的示例,我的实际示例要复杂得多,并且涉及 MVC ControllerFactory 和各种其他技术,但问题很简单地归结为上述问题。