通过编程方式创建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://…)
这还不够吗?
谢谢,马可
您需要在安装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;
}
应该可以了