Chcę aby każde wywołanie mojej usługi WCF dodawało nagłówek, dla przykładu z userId. Więc mam metodę, która tworzy obiekt klienta do usługi WCF i zwraca go w miejsce, gdzie wywoływana jest już faktyczna metoda usługi.
Mam coś takiego. Czy właściwe jest Dispose'owanie obiektu operCtx? Czy jeśli z usługi zwracany jest wyjątek operCtx zostanie zwolnione? Bo channel przejdzie w status faulted, więc zdarzenie się wywoła.

 
MyWcfService.MyWcfServiceClient GetServiceClient(int userId)
{
	var serviceCln = new MyWcfService.MyWcfServiceClient();
	var operCtx = new System.ServiceModel.OperationContextScope(serviceCln.InnerChannel);
	System.ServiceModel.OperationContext.Current.OutgoingMessageHeaders.Add(new System.ServiceModel.MessageHeader<int>(userId).GetUntypedHeader("User-ID", "http://example.com"));
	serviceCln.InnerChannel.Closing += (s, e) => { operCtx.Dispose(); };
	serviceCln.InnerChannel.Faulted += (s, e) => { operCtx.Dispose(); };

	return serviceCln;
}

public bool Foo1(int userId, ...)
{
	using (var client = GetServiceClient(userId))
	{
		return client.WcfFoo1(...);
	}
}

Wiem jak zrobić to lepiej. Natomiast interesuje mnie analiza takiego przypadku. Gdzie tu zrobiłem błąd?