我正在创建一个自定义 ServiceHost 对象并从代码中对其进行配置。我的服务正在使用 InstanceContextMode.Single 和 ConcurrencyMode.Multiple 并托管在 Windows 服务中。
正如许多博客/文章(此处)所述,跨实例共享 StructureMap 容器需要使用自定义的 InstanceProvider、ServiceBehavior 和 ServiceHostFactory。
我的初始化代码如下所示。我不使用配置文件。
var baseAddress = ConfigurationManager.AppSettings["BaseAddress"];
var port = Int32.Parse(ConfigurationManager.AppSettings["Port"]);
Host = new MyServiceHost(typeof(MediaFileServicePrivate), new Uri(string.Format(baseAddress, port)));
var binding = new NetTcpBinding();
Host.AddServiceEndpoint(typeof(IMediaFileServicePrivate), binding, string.Format(baseAddress, port));
如何告诉服务使用我的自定义服务主机工厂?我能找到的所有示例都从配置文件中配置它。
ServiceHostFactory 是否仅用于 IIS/WAS 托管方案?如果是这样,我如何将 SM 用于自托管的 InstanceContextMode.Single 服务?