Несколько конечных точек могут быть решением, но вам нужен надежный способ определить, какая конечная точка фактически использовалась.Учитывая «отключенную» природу служб REST WCF (под этим я подразумеваю использование не-WCF-типов для связи и просто использование атрибутов WCF), для этого потребуется написать WebHostFactory, в которой указывается страна, в которой создается службадля данной конечной точки.Что вы можете сделать, так это проверить экземпляр WebOperationCurrent.Current
, чтобы получить доступ к информации, скрытой от сигнатуры вашего метода.Например:
Uri requestRoot = WebOperationContext.Current.IncomingRequest.UriTemplateMatch.BaseUri;
if (requestRoot.PathAndQuery.Contains("en-us")) {
// use english locale
}
else if (requestRoot.PathAndQuery.Contains("de-de")) {
// use german locale
}
Вам потребуется более эффективная стратегия для определения фактической страны / языка, но основная идея состоит в том, чтобы повторно разместить один и тот же сервис под несколькими путями и проверить эти пути в запросе, используятекущий WebOperationContext
экземпляр.
Редактировать Из вышеупомянутых комментариев я хотел бы добавить, что у вас есть доступ к строке UserAgent
для текущего запроса с использованием WebOperationContext
.Таким образом, вы также можете проверить эту информацию в поисках подсказки о запрашиваемом языке.Но имейте в виду, что эта «неявная» информация является лишь ключом, но никогда не дает четких указаний на то, что хочет пользователь.