Если требуемый клиент запускает ASP, я бы, вероятно, выбрал предлагаемое решение AspNetSession. Однако, если вы не можете полагаться на AspNetSessions, тогда вы можете использовать HTTP-заголовки для отправки этой информации при каждом вызове. При первом вызове, когда база данных определена, сервер берет информацию о том, какую базу данных взять, непосредственно из параметра метода и сохраняет ее в заголовке HTTP.
OperationContext.Current.OutgoingMessageHeaders.Add(MessageHeader.CreateHeader(HEADER_NAME, NAMESPACE, yourDbName));
В классическом ASP должен быть способ получить эту информацию, но я не эксперт в этом.
http://www.w3schools.com/asp/coll_servervariables.asp
означает, что вы можете просто получить к нему доступ. При всех последующих вызовах клиент снова отправляет информацию заголовка на сервер.
на сервере, который вы прочитали, выполнив
int index = OperationContext.Current.IncomingMessageHeaders.FindHeader(HEADER_NAME, NAMESPACE)
string yourDbName = OperationContext.Current.IncomingMessageHeaders.GetHeader<string>(headerIndex);
Таким образом, код вашего Сервера не загрязняется, и вы можете автоматизировать помещение и получение этой информации из заголовка в собственный класс, чтобы ваша реализация Службы не знала, откуда эта информация поступает.