问题标签 [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.

0 投票
0 回答
242 浏览

wcf - 温莎城堡 Wcf 设施:端点名称问题

我的应用程序正在尝试使用我有一个 WSDL 文件的 WebService。所以,我使用 SvcUtil.exe 生成了一个接口。我在我的课堂上使用它,如下所示:

我将“IExportService”注入为:

我的问题是我被迫在 app.config 中使用与要注入实例的类构造函数(“Usage”)中的属性名称(“exportServiceProxyClient”)相同的端点名称。我不认为这是一个好主意。如果我不这样做,我会得到一个例外:

我不知道如何解决这个问题。为什么 Windsor 希望端点名称应该与注入它的类的构造函数中的变量名称相同。

有人可以帮忙吗?

0 投票
1 回答
1838 浏览

castle-windsor - 为什么Castle Windsor 注册为Singleton 生活方式的Typed Factory 被处置?

我在温莎城堡遇到了非常奇怪的情况,工厂注册为LifeStyle.Singleton似乎在某个时候被处置。几个小时后,我能够将生产案例简化为以下摘录:

编辑 经过一些调查,我已经将问题简化为几乎微不足道的情况(原始版本保存在下面):

Ant 现在的异常也短得多:

我相信现在这不再是一个问题了,因为温莎过去有过非常相似的问题(IOC-345),所以我写了失败的测试并提交了一个问题

原始变体:

在上面带有 Windsor 3.2 的标记线上,我得到了异常:

有任何想法吗?

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

c# - 增加温莎设施

我有一个 Windsor 工具,我需要使用它来向已注册的组件添加转发。出于某种原因,我似乎无法弄清楚如何做到这一点。

我有ComponentRegistered事件绑定,我能够过滤掉我需要添加额外接口的内容,但我似乎无法添加转发。这是我在我的设施中拥有的:

我有以下接口和类:

public interface ICanDoMagic

public interface IBasicInterface

public class BasicClass : IBasicInterface, ICanDoMagic

这是在温莎的注册

container.Register(Component.For<IBasicInterface>().ImplementedBy<BasicClass>())

我想要发生的是当用户注册实现 ICanDoMagic 的东西时(就像我在上面的注册中一样)我还想为该类注册 ICanDoMagic 接口,这样他们就不需要自己注册它。我认为这是通过前锋完成的,但我不知道如何添加它。

0 投票
1 回答
501 浏览

c# - Windsor WCF 客户端 - 配置中不存在时“找不到默认端点元素”

如果没有在 Web/App.config 文件中明确定义它们,我无法让 Windsor WCF 工具生成客户端端点。

我的合同、客户端和回调是作为服务参考生成的,我想以编程方式注册所有内容而不使用配置文件。但是,当 App/Web.config 中不存在端点信息时,我会收到此错误:

错误:在 ServiceModel 客户端配置部分中找不到引用合同“ServiceReference1.IWcfContract”的默认端点元素。这可能是因为没有为您的应用程序找到配置文件,或者因为在客户端元素中找不到与此合同匹配的端点元素。

登记

类型化工厂

工厂选择器

解决客户端

此时,如果我在 Web/App.config 文件中有端点信息,那么一切正常。如果我把它拿出来,我会收到上面提到的错误。谢谢!

0 投票
1 回答
67 浏览

.net - 了解使用基于接口的工厂和普通 IoC 接口实例化之间的区别

首先,很抱歉,如果我使用的术语无效,试图正确但不确定是否正确,现在对我来说有点困惑。

我正在使用 Windsor 并且无法确定何时以及如何(我认为)使用基于接口的工厂实例化而不总是正常的ctor(IObj obj).

让我举个例子。我有这个构造函数

我设置代码的方式,_cache_cache2返回 exakt 相同的对象。为什么我应该使用ICacheFactory实例化类的方式?

这就是我配置它的方式

我在想 CacheFactory 就像我做的那样

那么,我是否完整地思考了interface-based factories该做什么,如果不是,我为什么要使用ICacheFactory实例化课程的方式?

(我应该清楚,我已经阅读了 Windsor 文档,但没有 100% 得到它。)

感谢您的时间,我希望它不会模糊。

0 投票
0 回答
110 浏览

c# - 如何使 WCF Facility 实例化服务急切而不是懒惰?(温莎古堡)

我已经向 WindsorContainer 注册了 WCF 服务,如下所示:

TestService在创建第一个 WCF 请求时实例化该对象。我想要的是在我想要的时候手动实例化它,如下所示:

(例如,当用户从 GUI 中单击“打开”按钮时)。

客户端在连接时应该只是得到错误,直到服务启动。

我怎样才能做到这一点?

0 投票
1 回答
1469 浏览

c# - 使用顶层架子和温莎城堡托管 WCF 服务

我正在使用 Topshelf 运行我的 wcf 服务和 windsor castle 进行依赖注入。当我直接运行主机程序时出现问题,它作为控制台主机运行良好,但同一程序在尝试将其作为 Windows 服务启动时出现此错误。

下面是我的实现: -

0 投票
1 回答
72 浏览

c# - TypedFactory 的参数不会被进一步绕过

  1. 有一个类型化工厂:

    /li>
  2. IDataProvider 有几种实现

  3. 一些实现依赖于 ICalculator
  4. ICalculator 有几种实现
  5. 有一个配置类:

    /li>

当我尝试调用工厂的方法 Create 时,Windsor 正在尝试解析 IDataProvider 的依赖项,即 ICalculator。

在这里,我需要容器使用原始参数中的信息,以便了解要使用哪个版本的 ICalculator。

更新

我想补充一些细节:

  1. 有一个类我使用 IDataProviderFactory。在那里我控制 IDataProviders 的生命周期,我不时使用工厂创建和销毁它们。所以在这个级别上,我不想知道任何关于 IDataProvider 实现的信息——可能有没有计算器的 DataProvider。
  2. 一开始我有自己的 IDataProviderFactory 实现,我可以在其中解析 ICalculator 并将其注入 DataProvider。但是在回收方面,我正在处理 DataProvider,但是在 Windsor 的情况下,当您手动解决某些问题时,处理似乎是不够的,您需要显式释放它。

可能的解决方案:

  • 我仍然可以手动完成所有这些,但很可能我会通过一些演员来打破美感。
  • 如果需要,我可以将 Calculators 的类型化工厂注入 DataProviders 实现,并在那里控制 Calculator 的生命周期。例如:我用我的工厂创建了 DataProvider,然后我不需要它,我释放它,容器将调用 DataProvider 的 dispose,我将在其中释放带有自己工厂的计算器。
  • 温莎方式?
0 投票
4 回答
304 浏览

c# - 开放的泛型类型的 Castle Windsor Complex 注册

我有 2 个用于数据处理的类:

我有很多这样的模型:

使用这些接口:

我应该如何注册或者是否可以将 Windsor 容器注册为泛型,但 MondoDbEntity 与 MongoDbProvider 一起使用,而 MsSQl 模型与 SqlDataProvider 一起使用。

我已经尝试过这些,但没有工作:

提前谢谢!