Is there a way to do this ...
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
...pro
I'm answering my own question as I've found a solution in another answer on stackoverflow, and I think stackoverflow is a great place to search without even having to ask a question, so hopefully I will add to that richness by answering my own question with a link to the other answer and not just closing my own question.
My code now looks like this ...
public HttpWebService(string baseUri, string acceptType, TApi serviceInstance = null)
{
_baseUri = baseUri;
_acceptType = acceptType.ToLower();
if (serviceInstance != null)
{
_host = new HttpServiceHost(serviceInstance, baseUri);
var behaviour = _host.Description.Behaviors.Find();
behaviour.InstanceContextMode = InstanceContextMode.Single;
}
_host = _host ?? new HttpServiceHost(typeof (TApi), baseUri);
_host.Open();
_client = new HttpClient();
_client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(_acceptType));
}
I changed this ...
_host = serviceInstance == null
? new HttpServiceHost(typeof (TApi), baseUri)
: new HttpServiceHost(serviceInstance, baseUri);
... to this ...
if (serviceInstance != null)
{
_host = new HttpServiceHost(serviceInstance, baseUri);
var behaviour = _host.Description.Behaviors.Find();
behaviour.InstanceContextMode = InstanceContextMode.Single;
}
_host = _host ?? new HttpServiceHost(typeof (TApi), baseUri);