我的应用程序由很多不同的Windows服务组成。它们中的每一个都以编程方式创建WCF服务。我尝试使用“per-call”instancecontextmode配置我的服务,但它似乎一次处理一个请求。
我该怎么办? 实现服务接口的类使用以下属性进行修饰:
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
虽然服务实例化如下:
ServiceHost _host = new ServiceHost(typeof(IMultiMarketBatchNotification));
_host.AddServiceEndpoint(typeof(IMultiMarketBatchNotification), binding, myAddress);
其中:
还不够吗?
谢谢, 马可
答案 0 :(得分:4)
您需要在设置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;
}
应该这样做。