问题标签 [windsor-3.0]

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

.net - 列出并解决接口 [Windsor Castle] 的实现

由于 Autofac 不在 Mono 上工作,我正在尝试切换到 Windsor IoC 框架。我想在 dll 中搜索我的接口 IDataLoader 的实现,并将它们全部解析为实例。

这是我的解析代码:

界面如下所示:

和实施:

解决后我收到错误:

为了使我的类可以被 Windsor 框架解析,我是否需要做任何额外的工作?我也尝试使用 register 和 resolveall 方法,但对我没有用。

0 投票
0 回答
520 浏览

asp.net-mvc - 在 Castle Windsor 中指定运行时 PerWebRequest 组件的实例

我目前在使用城堡 3.1 的 asp.net MVC Web Api 项目中工作。

我注册了一个生活方式为“PerWebRequest”的组件。

我想手动告诉城堡使用哪个实例,而不是让容器创建实例。在每个 Web 请求上。

这是我实现这一目标的方法:

我通过 DelegatingHandler 将 HttpRequestMessage 实例缓存在 HttpContext 的 Items 集合中(对于那些不知道的人,DelegatingHandler 是 WebApi 框架提供的第一个扩展点)。注册组件时,我使用工厂并从上下文中检索 HttpRequestMessage。

这是代码:

这是我注册组件的方式:

它确实有效,但我想避免使用 HttpContext.Current 实例。有没有更好的方法来使用城堡实现这一目标?

感觉这个应该是内置城堡的支持,但是找不到。

谢谢,

0 投票
1 回答
353 浏览

wcf - Windsor Castle 3.0 使用 IContributeComponentModelConstruction 将生活方式设置为 WcfPerOperation

在 Windsor 2.1 中,当代码在 wcf 上下文中执行时,我有以下代码将所有服务的生活方式更改为 PerWcfOperation:

其中 CustomLifestyleLevelingContributeComponentModelConstruction 是:

我的问题是PerWcfOperationLifestyle已从 Windsor 3.0 中删除。谁能告诉我如何使用 Windsor 3.x 实现相同的目标?

0 投票
3 回答
1169 浏览

c# - 限制 Windsor Container 基于解析对象

我想创建一个容器,它允许解析 ISomeService,但不允许解析 ISomeOtherService。即使我对 ISomeService 的注册依赖于 ISomeOtherService。

那有意义吗?

这个容器我想为 ISomeService 解析 SomeService 但如果我试图解析 ISomeOtherService 或 SomeOtherService 它会失败。

这是糟糕的设计吗?

所以,有一点上下文...我有 ASP.Net MVC 控制器,将由各种开发人员开发。这些控制器应该可以访问 ISomeService 之类的应用程序服务,但不能访问它们的依赖项。我想避免必须对所有这些服务进行代码审查,以确保开发人员没有违反架构设计。他们应该能够获得对 ISomeService 的引用,但 ISomeOtherService 是一个数据库存储库,他们不应该直接处理它,但 ISomeService 确实需要这个引用。

我不介意在解析过程中希望(它是一个 ASP.NET MVC 应用程序,我已经有一个用于创建控制器的扩展点)所以我可以查看正在解析的控制器,查看它的依赖关系并确保它们'在白名单上,但我不知道如何轻松评估与 Windsor 的依赖关系。或者,我是否只需要通过查看构造函数参数自己来完成?

0 投票
2 回答
534 浏览

c#-4.0 - 使用继承和无接口解析 Castle 中的通用构造函数参数

虽然我之前在 Castle Windsor 中使用过泛型,但这种特殊的组合目前让我感到困惑。

我想将其解析为构造函数参数,在此单元测试中通过显式调用resolve() 对其进行模拟。

但我无法弄清楚我需要做什么注册和解析的组合。我在下面显示了测试失败的代码,以明确问题。

0 投票
2 回答
3875 浏览

castle-windsor - Castle Windsor - 注册组件

我创建了一个通用静态类,用于在整个解决方案范围内注册组件。

但是,我无法编译它。有任何想法吗?

类型“I”必须是引用类型才能在泛型类型或方法“Castle.MicroKernel.Registration.Component.For()”中用作参数“TService”

0 投票
0 回答
146 浏览

castle-windsor - Castle Windsor:将 WCF 客户端与本地组件混合

我有标有 [ServiceContract] 属性的服务(在温莎城堡的意义上)。其中一些是 WCF 托管的,另一些是在本地运行的。

我希望我的安装程序尽可能通用。我正在寻找的逻辑是这样的:

  1. 在应用程序的 bin 目录中查找服务。
  2. 您找到实现的任何东西,都可以在本地使用(这也必须与装饰器一起使用)。
  3. 任何你没有找到的东西,假设应该通过 WCF 调用。

服务托管在 Web 应用程序中,Application_Start 方法设置所有内容并通过 WCF 托管服务。在此 Web 应用程序中,通过 WCF 访问其他服务也可以正常工作,无需任何进一步的逻辑。

但是,我也有一个 ASP.NET MVC 应用程序,我无法让它通过 WCF 调用服务。我总是得到一条错误消息,上面写着:

IMyService 类型是抽象的。因此,不可能将其实例化为服务 IMyService 的实现

而且,当我注册一个拦截器时,它说

这是一个 DynamicProxy2 错误:拦截器试图为没有目标的方法“MyDataContract FooMethod(System.String)”“继续”。当调用没有目标的方法时,没有“继续”的实现,拦截器有责任模仿实现(设置返回值、输出参数等)

这是我最近的尝试(换句话说,它是“ConfigureAsWcfClient”部分不起作用):

我当然也想摆脱预处理器指令。系统应该自动检测装饰器是否存在。“本地”实现位于名为.Impl.dll 的程序集中,装饰器位于名为 * .ServiceProxy.*.dll 的程序集中。

哦,如果我删除对非本地服务(应通过 WCF 调用的服务)的特殊处理,我总是会收到错误消息“客户端模型需要和端点”。

非常感谢任何帮助。

0 投票
1 回答
1546 浏览

c# - 温莎城堡3.2解决性能

我们有一个使用温莎城堡多年的大型 Web 应用程序。该应用程序有超过 370 个服务的大约 700 个组件注册。它们几乎都属于根,即入口点控制器。当一个网络请求到来时,我们解析那个入口控制器并让它处理请求。问题是解析根组件大约需要 35 毫秒。我会说这对我来说听起来很多。

我的问题是上面的数字听起来正常吗?谁能告诉我我可以做些什么来改善解决时间?或者检查我是否做错了什么?

谢谢 :)

0 投票
1 回答
2094 浏览

c# - WCF 和温莎城堡 - 看起来你忘了

我们最近开始迁移到 Castle Windsor,但在运行 WCF 服务时遇到了一些问题。这是一个不托管在 IIS中的常规 Windows 服务,我们在其中提供 SSL 材料并使用自定义X509CertificateValidator来验证客户端提供的证书。

下面是我用来创建 WCF 服务的代码。它位于引用它的 WCF 服务的单独项目中。

服务按预期启动(我可以毫无问题地使用 chrome 导航到服务)并且服务正在呈现和验证 SSL 材料(即点击自定义验证器),但在那之后,客户端在以下位置获得FaultException

下面是我的一部分,我App.Config试图将模块放置在通过谷歌和一些猜测建议的所有区域中:

我几乎没有想法。有谁知道可能是什么原因?如果没有,任何人都可以解释一下我遇到的错误吗?任何帮助将非常感激!

0 投票
1 回答
304 浏览

wpf - 多次注册温莎城堡

我在 WPF 应用程序中有以下情况:

而且我需要能够将 ExpenseView 注册为可通过两种方式解析,具体类型 ExpenseView 和 IAccountingView(也可能作为另一个接口)。

我正在注册这样的类型:

现在,这行得通,ExpenseView 和所有其他类型都被实例化了,除了当我需要使用

要获得另一个实例,其中 iView.ViewType 是具体类型 ExpenseView (根据示例),我得到了这个异常:

任何想法为什么会发生这种情况以及如何使其发挥作用?