gpt4 book ai didi

wcf - 在 WCF 中自托管时如何初始化服务对象

转载 作者:行者123 更新时间:2023-12-04 20:37:17 26 4
gpt4 key购买 nike

我在 Windows 服务中托管服务。

以下代码片段实例化了 ServiceHost 对象:

Host = new ServiceHost(typeof(Services.DocumentInfoService));

DocumentInfoService 类实现了一个契约接口(interface),该接口(interface)具有调用需要初始化的业务对象(实际上是一个连接字符串)的方法。理想情况下,我希望托管进程从配置文件中获取连接字符串并将其传递给我的服务对象 DocumentInfoService 的构造函数,该构造函数将保留它并根据需要使用它传递给业务对象。

但是,ServiceHost 构造函数采用 System.Type 对象——因此 DocumentInfoService 的实例是通过默认构造函数创建的。我确实注意到 ServiceHost 有另一个构造函数方法,它接受一个对象实例——但文档表明它是用于单例的。

有没有办法让我在构造对象后访问它,以便我可以传递一些初始化数据?

最佳答案

ServiceHost 将根据为端点配置的绑定(bind)和行为创建服务实例。没有特定的时间点,您可以依赖服务实例。因此,ServiceHost 不公开服务实例。

您可以做的是向您的服务对象构造函数添加代码,以通过 ConfigurationManager 读取相关配置值本身。类(class)。

当然,如果您不将配置保存在 app.config 中,那将不适合您。另一种方法是拥有一个众所周知的单例对象,服务实例在创建时访问该对象以获得必要的配置。

并且还可以选择创建自己的 ServiceHost 或自己的 ServiceHostFactory 来显式控制服务实例化。这将使您能够在创建时访问新的服务实例。不过,我会远离那个选项。不值得为您的场景付出努力。

关于wcf - 在 WCF 中自托管时如何初始化服务对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/180626/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com