Я пытаюсь получить страну своих клиентов, таким образом, я использую CultureInfo. CurrentCulture. Проблема состоит в том, что, когда мои канадские клиенты используют мой веб-сайт, они обнаруживаются как американец.
Это похоже на CultureInfo. CurrentCulture возвращает страну моего сервера вместо их страны. Таким образом, как я получаю страну своих клиентов?
Я полагаю, что вам нужно написать код для чтения культуры пользователя из входящего запроса браузера, и установить ваш CultureInfo из этого.
Этот товарищ описывает, как они это делают: Установить культуру отображения для текущего потока на наиболее подходящую культуру из входящего объекта Http "request" пользователя.
У него там отличное обсуждение, но вот как он это делает:
В Page_Load
они делают такой вызов: UIUtilities.setCulture(Request);
Где вызывается вот что:
/// Set the display culture for the current thread to the most
/// appropriate culture from the user's incoming Http "request" object.
internal static void setCulture(HttpRequest request)
{
if (request != null)
{
if (request.UserLanguages != null)
{
if (request.UserLanguages.Length > -1)
{
string cultureName = request.UserLanguages[0];
UIUtilities.setCulture(cultureName);
}
}
// TODO: Set to a (system-wide, or possibly user-specified) default
// culture if the browser didn't give us any clues.
}
}
/// Set the display culture for the current thread to a particular named culture.
/// <param name="cultureName">The name of the culture to be set
/// for the thread</param>
private static void setCulture(string cultureName)
{
Thread.CurrentThread.CurrentCulture =
CultureInfo.CreateSpecificCulture(cultureName);
Thread.CurrentThread.CurrentUICulture = new
CultureInfo(cultureName);
}