आप web.config
या app.config
में इस ले जाना चाहते हैं, तो आप एक कस्टम BehaviorExtensionElement
और IServiceBehavior
के साथ ऐसा कर सकता है:
IServiceBehavior
वास्तव में enum में config से मान पार्स और इसे सेट (निम्नलिखित @ Ladislav का जवाब होगा):
:
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;
}
}
विस्तार तत्व आप config से निकालें और उसे IServiceBehavior
को पारित करने के लिए अनुमति देता है
और तुम तो अपने config में यह रजिस्टर और इसका इस्तेमाल कर सकते हैं:
<extensions>
<behaviorExtensions>
<add name="instanceContext" type="FULLY QUALFIED NAME TO CLASS"/>
</behaviorExtensions>
</extensions>
...
<serviceBehaviors>
<behavior name="Default">
<instanceContext contextMode="Single"/>
स्रोत
2016-06-21 14:07:22
मैं WCF करने के लिए नया हूँ और मैं एक WCF सेवा है जो मैं के बजाय वर्ग पर विन्यास मेटाडाटा के साथ नियंत्रित करने के लिए चाहते हैं। क्या आप कृपया अपने समाधान का विवरण प्रदान कर सकते हैं। – SJunejo
मुझे 'InstanceContextMode' को' PerCall' पर बल देने की आवश्यकता है, और यह विधि इसके लिए भी काम करती है। – Dan