问题标签 [windsor-facilities]
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.
wcf - 温莎城堡 Wcf 设施:端点名称问题
我的应用程序正在尝试使用我有一个 WSDL 文件的 WebService。所以,我使用 SvcUtil.exe 生成了一个接口。我在我的课堂上使用它,如下所示:
我将“IExportService”注入为:
我的问题是我被迫在 app.config 中使用与要注入实例的类构造函数(“Usage”)中的属性名称(“exportServiceProxyClient”)相同的端点名称。我不认为这是一个好主意。如果我不这样做,我会得到一个例外:
我不知道如何解决这个问题。为什么 Windsor 希望端点名称应该与注入它的类的构造函数中的变量名称相同。
有人可以帮忙吗?
castle-windsor - 为什么Castle Windsor 注册为Singleton 生活方式的Typed Factory 被处置?
我在温莎城堡遇到了非常奇怪的情况,工厂注册为LifeStyle.Singleton
似乎在某个时候被处置。几个小时后,我能够将生产案例简化为以下摘录:
编辑 经过一些调查,我已经将问题简化为几乎微不足道的情况(原始版本保存在下面):
Ant 现在的异常也短得多:
我相信现在这不再是一个问题了,因为温莎过去有过非常相似的问题(IOC-345),所以我写了失败的测试并提交了一个问题
原始变体:
在上面带有 Windsor 3.2 的标记线上,我得到了异常:
有任何想法吗?
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# - 增加温莎设施
我有一个 Windsor 工具,我需要使用它来向已注册的组件添加转发。出于某种原因,我似乎无法弄清楚如何做到这一点。
我有ComponentRegistered
事件绑定,我能够过滤掉我需要添加额外接口的内容,但我似乎无法添加转发。这是我在我的设施中拥有的:
我有以下接口和类:
public interface ICanDoMagic
public interface IBasicInterface
public class BasicClass : IBasicInterface, ICanDoMagic
这是在温莎的注册
container.Register(Component.For<IBasicInterface>().ImplementedBy<BasicClass>())
我想要发生的是当用户注册实现 ICanDoMagic 的东西时(就像我在上面的注册中一样)我还想为该类注册 ICanDoMagic 接口,这样他们就不需要自己注册它。我认为这是通过前锋完成的,但我不知道如何添加它。
c# - Windsor WCF 客户端 - 配置中不存在时“找不到默认端点元素”
如果没有在 Web/App.config 文件中明确定义它们,我无法让 Windsor WCF 工具生成客户端端点。
我的合同、客户端和回调是作为服务参考生成的,我想以编程方式注册所有内容而不使用配置文件。但是,当 App/Web.config 中不存在端点信息时,我会收到此错误:
错误:在 ServiceModel 客户端配置部分中找不到引用合同“ServiceReference1.IWcfContract”的默认端点元素。这可能是因为没有为您的应用程序找到配置文件,或者因为在客户端元素中找不到与此合同匹配的端点元素。
登记
类型化工厂
工厂选择器
解决客户端
此时,如果我在 Web/App.config 文件中有端点信息,那么一切正常。如果我把它拿出来,我会收到上面提到的错误。谢谢!
.net - 了解使用基于接口的工厂和普通 IoC 接口实例化之间的区别
首先,很抱歉,如果我使用的术语无效,试图正确但不确定是否正确,现在对我来说有点困惑。
我正在使用 Windsor 并且无法确定何时以及如何(我认为)使用基于接口的工厂实例化而不总是正常的ctor(IObj obj)
.
让我举个例子。我有这个构造函数
我设置代码的方式,_cache
并_cache2
返回 exakt 相同的对象。为什么我应该使用ICacheFactory
实例化类的方式?
这就是我配置它的方式
我在想 CacheFactory 就像我做的那样
那么,我是否完整地思考了interface-based factories
该做什么,如果不是,我为什么要使用ICacheFactory
实例化课程的方式?
(我应该清楚,我已经阅读了 Windsor 文档,但没有 100% 得到它。)
感谢您的时间,我希望它不会模糊。
c# - 如何使 WCF Facility 实例化服务急切而不是懒惰?(温莎古堡)
我已经向 WindsorContainer 注册了 WCF 服务,如下所示:
TestService
在创建第一个 WCF 请求时实例化该对象。我想要的是在我想要的时候手动实例化它,如下所示:
(例如,当用户从 GUI 中单击“打开”按钮时)。
客户端在连接时应该只是得到错误,直到服务启动。
我怎样才能做到这一点?
c# - 使用顶层架子和温莎城堡托管 WCF 服务
我正在使用 Topshelf 运行我的 wcf 服务和 windsor castle 进行依赖注入。当我直接运行主机程序时出现问题,它作为控制台主机运行良好,但同一程序在尝试将其作为 Windows 服务启动时出现此错误。
下面是我的实现: -
c# - TypedFactory 的参数不会被进一步绕过
有一个类型化工厂:
/li>IDataProvider 有几种实现
- 一些实现依赖于 ICalculator
- ICalculator 有几种实现
有一个配置类:
/li>
当我尝试调用工厂的方法 Create 时,Windsor 正在尝试解析 IDataProvider 的依赖项,即 ICalculator。
在这里,我需要容器使用原始参数中的信息,以便了解要使用哪个版本的 ICalculator。
更新
我想补充一些细节:
- 有一个类我使用 IDataProviderFactory。在那里我控制 IDataProviders 的生命周期,我不时使用工厂创建和销毁它们。所以在这个级别上,我不想知道任何关于 IDataProvider 实现的信息——可能有没有计算器的 DataProvider。
- 一开始我有自己的 IDataProviderFactory 实现,我可以在其中解析 ICalculator 并将其注入 DataProvider。但是在回收方面,我正在处理 DataProvider,但是在 Windsor 的情况下,当您手动解决某些问题时,处理似乎是不够的,您需要显式释放它。
可能的解决方案:
- 我仍然可以手动完成所有这些,但很可能我会通过一些演员来打破美感。
- 如果需要,我可以将 Calculators 的类型化工厂注入 DataProviders 实现,并在那里控制 Calculator 的生命周期。例如:我用我的工厂创建了 DataProvider,然后我不需要它,我释放它,容器将调用 DataProvider 的 dispose,我将在其中释放带有自己工厂的计算器。
- 温莎方式?
c# - 开放的泛型类型的 Castle Windsor Complex 注册
我有 2 个用于数据处理的类:
我有很多这样的模型:
使用这些接口:
我应该如何注册或者是否可以将 Windsor 容器注册为泛型,但 MondoDbEntity 与 MongoDbProvider 一起使用,而 MsSQl 模型与 SqlDataProvider 一起使用。
我已经尝试过这些,但没有工作:
提前谢谢!