2011-10-25 29 views

Respuesta

4

En el archivo Global.asax puede establecer la cultura actual, incluso si su servicio web o página web.

// PreRequestHandlerExecute occurs after initialization of Session 
void Application_PreRequestHandlerExecute(Object Sender, EventArgs e) 
{ 
    // check if session is required for the request 
    // as .css don't require session and accessing session will throw exception 
    if (Context.Handler is IRequiresSessionState 
     || Context.Handler is IReadOnlySessionState) 
    { 
     string culture = "en-US"; 
     if (Session["MyCurrentCulutre"] != null) 
     { 
      culture = Session["MyCurrentCulutre"] as String; 
     } 

     System.Threading.Thread.CurrentThread.CurrentCulture = 
      System.Globalization.CultureInfo.CreateSpecificCulture(culture); 
    } 
} 

Está cambiando sus necesidades, sin embargo Session objeto no estará disponible en Begin_Request método, se puede hacer esto en su método web.

[WebMethod] 
public static string MyWebMethod() 
{ 
    String culture = Session["MyCurrentCulutre"] as String; 

    System.Threading.Thread.CurrentThread.CurrentCulture = 
     System.Globalization.CultureInfo.CreateSpecificCulture(culture); 

    return "My results"; 
} 
+0

InitializeCulture() es un método de página, no un método System.Web.Services.WebService. – rtcardoso

+1

@Waqas Raja, ¿Puedes dar un ejemplo gratuito de la vida real sobre por qué querría hacer eso? digamos que soy de Israel y el iis está en nosotros ... ¿puedes dar ejemplo? –

+0

Imagine que guardo el idioma de usuario preferido en la sesión. Entonces mi javascript realiza una llamada de servicio web. En la respuesta quiero enviar un mensaje de usuario en el idioma preferido del usuario ... – rtcardoso

Cuestiones relacionadas