通过编程方式创建WCF的Windows服务:如何使用Per-Call InstanceContextMode公开它

本文关键字:Per-Call 何使用 InstanceContextMode 服务 方式 编程 创建 WCF Windows | 更新日期: 2023-09-27 18:09:14

我的应用程序由许多不同的Windows服务组成。它们都以编程方式创建了一个WCF服务。我试图配置我的服务与"每调用"实例上下文模式,但它似乎处理一个请求的时间。

我该怎么办?实现服务接口的类使用以下属性进行装饰:

[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]

当服务像这样实例化时:

ServiceHost _host = new ServiceHost(typeof(IMultiMarketBatchNotification));
_host.AddServiceEndpoint(typeof(IMultiMarketBatchNotification), binding, myAddress);

地点:

  • multimarketbatchnotification是服务接口
  • 绑定是绑定的实例(NetTcpBinding)
  • myAddress是包含服务url的字符串(如net.tcp://…)

这还不够吗?

谢谢,马可

通过编程方式创建WCF的Windows服务:如何使用Per-Call InstanceContextMode公开它

您需要在安装ServiceHost之后,但在打开它之前添加这些代码行:

// look for the "ServiceBehavior" 
ServiceBehaviorAttribute srvBehavior = host.Description.Behaviors.Find<ServiceBehaviorAttribute>();
if (srvBehavior == null)
{
   // if we didn't find the service behavior - create one and add it to the list of behaviors
   srvBehavior = new ServiceBehaviorAttribute();
   srvBehavior.InstanceContextMode == InstanceContextMode.PerCall;
   host.Description.Behaviors.Add(srvBehavior);
}
else
{
   // if we found it - make sure the InstanceContextMode is set up properly
   srvBehavior.InstanceContextMode == InstanceContextMode.PerCall;
}

应该可以了