У меня есть служба данных WCF, которая работает нормально.Но теперь я хочу, чтобы он мог использовать другую базу данных, основанную на параметре, который отправляется потребителем моей службы данных.
Конкретный пример: клиент из США, который использует службу данных, передает «US» в качестве параметра, и поэтому служба данных использует базу данных США.Другой клиент из Бельгии, который использует службу данных, передает «BE» в качестве параметра, поэтому служба данных использует базу данных BE.Конечно, все базы данных имеют одинаковые схемы.
В настоящее время мой клиент использует службу данных, такую как:
var qclient = new QueryServiceReference.Complaint_Entities(new Uri("http://localhost:60642/QueryService.svc"));
Но как можно добавить параметр к этому?И как я могу проверить этот параметр в службе данных?
Итак, мой вопрос: как передать параметр в службу данных WCF?
РЕДАКТИРОВАТЬ: я нашел способ, но я нене знаю, если это лучший способ сделать это.Перед выполнением запроса я добавляю параметр в заголовок запроса:
var qclient = new QueryServiceReference.Complaint_Entities(new Uri("http://localhost:60642/QueryService.svc"));
qclient.SendingRequest += new EventHandler<System.Data.Services.Client.SendingRequestEventArgs>(qclient_SendingRequest);
var cat = qclient.Categories.ToList();
static void qclient_SendingRequest(object sender, System.Data.Services.Client.SendingRequestEventArgs e)
{
e.RequestHeaders.Add("Culture", "nl-BE");
}
В службе данных я могу затем использовать его для установки строки подключения:
protected override Complaint_Entities CreateDataSource()
{
var culture = HttpContext.Current.Request.Headers["Culture"];
// set connectionString based on culture
return new Complaint_Entities(connectionString);
}
Спасибо,L