问题标签 [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.
.net - 列出并解决接口 [Windsor Castle] 的实现
由于 Autofac 不在 Mono 上工作,我正在尝试切换到 Windsor IoC 框架。我想在 dll 中搜索我的接口 IDataLoader 的实现,并将它们全部解析为实例。
这是我的解析代码:
界面如下所示:
和实施:
解决后我收到错误:
为了使我的类可以被 Windsor 框架解析,我是否需要做任何额外的工作?我也尝试使用 register 和 resolveall 方法,但对我没有用。
asp.net-mvc - 在 Castle Windsor 中指定运行时 PerWebRequest 组件的实例
我目前在使用城堡 3.1 的 asp.net MVC Web Api 项目中工作。
我注册了一个生活方式为“PerWebRequest”的组件。
我想手动告诉城堡使用哪个实例,而不是让容器创建实例。在每个 Web 请求上。
这是我实现这一目标的方法:
我通过 DelegatingHandler 将 HttpRequestMessage 实例缓存在 HttpContext 的 Items 集合中(对于那些不知道的人,DelegatingHandler 是 WebApi 框架提供的第一个扩展点)。注册组件时,我使用工厂并从上下文中检索 HttpRequestMessage。
这是代码:
这是我注册组件的方式:
它确实有效,但我想避免使用 HttpContext.Current 实例。有没有更好的方法来使用城堡实现这一目标?
感觉这个应该是内置城堡的支持,但是找不到。
谢谢,
wcf - Windsor Castle 3.0 使用 IContributeComponentModelConstruction 将生活方式设置为 WcfPerOperation
在 Windsor 2.1 中,当代码在 wcf 上下文中执行时,我有以下代码将所有服务的生活方式更改为 PerWcfOperation:
其中 CustomLifestyleLevelingContributeComponentModelConstruction 是:
我的问题是PerWcfOperationLifestyle类已从 Windsor 3.0 中删除。谁能告诉我如何使用 Windsor 3.x 实现相同的目标?
c# - 限制 Windsor Container 基于解析对象
我想创建一个容器,它允许解析 ISomeService,但不允许解析 ISomeOtherService。即使我对 ISomeService 的注册依赖于 ISomeOtherService。
那有意义吗?
这个容器我想为 ISomeService 解析 SomeService 但如果我试图解析 ISomeOtherService 或 SomeOtherService 它会失败。
这是糟糕的设计吗?
所以,有一点上下文...我有 ASP.Net MVC 控制器,将由各种开发人员开发。这些控制器应该可以访问 ISomeService 之类的应用程序服务,但不能访问它们的依赖项。我想避免必须对所有这些服务进行代码审查,以确保开发人员没有违反架构设计。他们应该能够获得对 ISomeService 的引用,但 ISomeOtherService 是一个数据库存储库,他们不应该直接处理它,但 ISomeService 确实需要这个引用。
我不介意在解析过程中希望(它是一个 ASP.NET MVC 应用程序,我已经有一个用于创建控制器的扩展点)所以我可以查看正在解析的控制器,查看它的依赖关系并确保它们'在白名单上,但我不知道如何轻松评估与 Windsor 的依赖关系。或者,我是否只需要通过查看构造函数参数自己来完成?
c#-4.0 - 使用继承和无接口解析 Castle 中的通用构造函数参数
虽然我之前在 Castle Windsor 中使用过泛型,但这种特殊的组合目前让我感到困惑。
我想将其解析为构造函数参数,在此单元测试中通过显式调用resolve() 对其进行模拟。
但我无法弄清楚我需要做什么注册和解析的组合。我在下面显示了测试失败的代码,以明确问题。
castle-windsor - Castle Windsor - 注册组件
我创建了一个通用静态类,用于在整个解决方案范围内注册组件。
但是,我无法编译它。有任何想法吗?
类型“I”必须是引用类型才能在泛型类型或方法“Castle.MicroKernel.Registration.Component.For()”中用作参数“TService”
castle-windsor - Castle Windsor:将 WCF 客户端与本地组件混合
我有标有 [ServiceContract] 属性的服务(在温莎城堡的意义上)。其中一些是 WCF 托管的,另一些是在本地运行的。
我希望我的安装程序尽可能通用。我正在寻找的逻辑是这样的:
- 在应用程序的 bin 目录中查找服务。
- 您找到实现的任何东西,都可以在本地使用(这也必须与装饰器一起使用)。
- 任何你没有找到的东西,假设应该通过 WCF 调用。
服务托管在 Web 应用程序中,Application_Start 方法设置所有内容并通过 WCF 托管服务。在此 Web 应用程序中,通过 WCF 访问其他服务也可以正常工作,无需任何进一步的逻辑。
但是,我也有一个 ASP.NET MVC 应用程序,我无法让它通过 WCF 调用服务。我总是得到一条错误消息,上面写着:
IMyService 类型是抽象的。因此,不可能将其实例化为服务 IMyService 的实现
而且,当我注册一个拦截器时,它说
这是一个 DynamicProxy2 错误:拦截器试图为没有目标的方法“MyDataContract FooMethod(System.String)”“继续”。当调用没有目标的方法时,没有“继续”的实现,拦截器有责任模仿实现(设置返回值、输出参数等)
这是我最近的尝试(换句话说,它是“ConfigureAsWcfClient”部分不起作用):
我当然也想摆脱预处理器指令。系统应该自动检测装饰器是否存在。“本地”实现位于名为.Impl.dll 的程序集中,装饰器位于名为 * .ServiceProxy.*.dll 的程序集中。
哦,如果我删除对非本地服务(应通过 WCF 调用的服务)的特殊处理,我总是会收到错误消息“客户端模型需要和端点”。
非常感谢任何帮助。
c# - 温莎城堡3.2解决性能
我们有一个使用温莎城堡多年的大型 Web 应用程序。该应用程序有超过 370 个服务的大约 700 个组件注册。它们几乎都属于根,即入口点控制器。当一个网络请求到来时,我们解析那个入口控制器并让它处理请求。问题是解析根组件大约需要 35 毫秒。我会说这对我来说听起来很多。
我的问题是上面的数字听起来正常吗?谁能告诉我我可以做些什么来改善解决时间?或者检查我是否做错了什么?
谢谢 :)
c# - WCF 和温莎城堡 - 看起来你忘了
我们最近开始迁移到 Castle Windsor,但在运行 WCF 服务时遇到了一些问题。这是一个不托管在 IIS中的常规 Windows 服务,我们在其中提供 SSL 材料并使用自定义X509CertificateValidator
来验证客户端提供的证书。
下面是我用来创建 WCF 服务的代码。它位于引用它的 WCF 服务的单独项目中。
服务按预期启动(我可以毫无问题地使用 chrome 导航到服务)并且服务正在呈现和验证 SSL 材料(即点击自定义验证器),但在那之后,客户端在以下位置获得FaultException
:
下面是我的一部分,我App.Config
试图将模块放置在通过谷歌和一些猜测建议的所有区域中:
我几乎没有想法。有谁知道可能是什么原因?如果没有,任何人都可以解释一下我遇到的错误吗?任何帮助将非常感激!
wpf - 多次注册温莎城堡
我在 WPF 应用程序中有以下情况:
而且我需要能够将 ExpenseView 注册为可通过两种方式解析,具体类型 ExpenseView 和 IAccountingView(也可能作为另一个接口)。
我正在注册这样的类型:
现在,这行得通,ExpenseView 和所有其他类型都被实例化了,除了当我需要使用
要获得另一个实例,其中 iView.ViewType 是具体类型 ExpenseView (根据示例),我得到了这个异常:
任何想法为什么会发生这种情况以及如何使其发挥作用?