I have the code below to return an instance of my WCF ServiceClient :
var readerQuotas = new XmlDictionaryReaderQuotas() { MaxDepth = 6000000, MaxStringContentLength = 6000000, MaxArrayLength = 6000000, MaxBytesPerRead = 6000000, MaxNameTableCharCount = 6000000 }; var throttlingBehaviour = new ServiceThrottlingBehavior(){MaxConcurrentCalls=500,MaxConcurrentInstances=500,MaxConcurrentSessions = 500}; binding = new WSHttpBinding(SecurityMode.None) {MaxReceivedMessageSize = 6000000, ReaderQuotas = readerQuotas}; dualBinding = new WSDualHttpBinding(WSDualHttpSecurityMode.None) {MaxReceivedMessageSize = 6000000, ReaderQuotas = readerQuotas}; endpointAddress = new EndpointAddress("http://localhost:28666/DBInteractionGateway.svc"); return new MusicRepo_DBAccess_ServiceClient(new InstanceContext(instanceContext), dualBinding, endpointAddress);
Recently, I had problems with timeouts, so I decided to add throttling, for example:
var throttlingBehaviour = new ServiceThrottlingBehavior () { MaxConcurrentCalls=500, MaxConcurrentInstances=500, MaxConcurrentSessions = 500 };
My question is: where in the code above should I add this throttlingBehaviour to my MusicRepo_DBAccess_ServiceClient instance?
From some examples that I found on the Internet, they do something like this:
ServiceHost host = new ServiceHost(typeof(MyService)); ServiceThrottlingBehavior throttleBehavior = new ServiceThrottlingBehavior { MaxConcurrentCalls = 40, MaxConcurrentInstances = 20, MaxConcurrentSessions = 20, }; host.Description.Behaviors.Add(throttleBehavior); host.Open();
Please note that in the above code they use ServiceHost , while I am not, and then they open it (using Open() ), while I open the MusicRepo_DBAccess_ServiceClient ... and this is what got me confused.