Eğer web.config
veya app.config
içine bu hareket etmek istiyorsanız, özel bir BehaviorExtensionElement
ve IServiceBehavior
ile çok yapabilirdi:
IServiceBehavior
aslında enum içine yapılandırmasındaki değerini ayrıştırmak ve Ladislav cevabı @ aşağıdaki (o ayarlayacaktır):
:
public class InstanceContextServiceBehavior : IServiceBehavior
{
InstanceContextMode _contextMode = default(InstanceContextMode);
public InstanceContextServiceBehavior(string contextMode)
{
if (!string.IsNullOrWhiteSpace(contextMode))
{
InstanceContextMode mode;
if (Enum.TryParse(contextMode, true, out mode))
{
_contextMode = mode;
}
else
{
throw new ArgumentException($"'{contextMode}' Could not be parsed as a valid InstanceContextMode; allowed values are 'PerSession', 'PerCall', 'Single'", "contextMode");
}
}
}
public void AddBindingParameters(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase, Collection<ServiceEndpoint> endpoints, BindingParameterCollection bindingParameters)
{
var behavior = serviceDescription.Behaviors.Find<ServiceBehaviorAttribute>();
behavior.InstanceContextMode = _contextMode;
}
public void ApplyDispatchBehavior(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase)
{
return;
}
public void Validate(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase)
{
return;
}
}
uzatma öğesi yapılandırmasındaki çekin ve IServiceBehavior
bunu geçmesine izin verir
Ve sonra config kaydetmek ve kullanabilirsiniz:
<extensions>
<behaviorExtensions>
<add name="instanceContext" type="FULLY QUALFIED NAME TO CLASS"/>
</behaviorExtensions>
</extensions>
...
<serviceBehaviors>
<behavior name="Default">
<instanceContext contextMode="Single"/>
WCF için yeni ve ben sınıfına yapılandırma yerine meta veri ile kontrol etmek istediğiniz bir WCF hizmeti var. Lütfen çözümünüzün detaylarını verebilir misiniz? – SJunejo
'InstanceContextMode' öğesini 'PerCall'a zorladım ve bu yöntem de bunun için çalışıyor. – Dan