2009-07-07 16 views
6

En una aplicación web tengo un IHttpHandler que cuando se invoca inicia una aplicación regular que se conecta a una base de datos firebird y, entre otras cosas, analiza algunas fechas desde la base de datos.Process.Start especifica cultura

Cuando se ejecuta desde el escritorio, la aplicación hace lo que debería sin ningún problema. Pero cuando se inicia desde httpHandler, termina con una cultura incorrecta y no analiza las fechas. He establecido la cultura tanto en web.config como en CurrentThread.CurrentCulture, pero aún así termina con la incorrecta. Todo esto se ejecuta desde un servidor de Windows 2003 en inglés con el conjunto de cultivos a sv-SE.

Entonces, ¿hay alguna manera de iniciar una aplicación con System.Diganotics.Process.Start con una cultura específica? ¿Si no hay qué cultura utiliza el proceso recién iniciado?

+0

¿Puedes seguir explicando qué intentas lograr? – Lazarus

Respuesta

2

No creo que haya una manera de especificar la cultura. La clase CultureInfo es específica de .NET, y hasta donde yo sé, no existe una noción específica de la aplicación de una cultura en Windows. No hay forma de especificar una cultura utilizando las clases Process y ProcessStartInfo.

Sin embargo, creo que la cultura está asociada con el usuario actual, por lo que puede suceder que su aplicación web se ejecute en un contexto de usuario diferente, así que cuando se inicia desde la aplicación web, la otra aplicación obtiene su ' configuración de cultura de los usuarios. Por lo tanto, puede cambiar la cultura (configuración regional) para el usuario que se utiliza para ejecutar la aplicación web.

Por otro lado, si su aplicación 'a .NET se está ejecutando, podría simplemente codificar el código cultural en ella.

+0

Sí, tengo la sensación de que podría tener alguna configuración de usuario que hacer. Desafortunadamente no es una aplicación .NET y no puedo modificarla fácilmente. Entonces la pregunta restante es. ¿Cómo cambio la configuración regional para una cuenta de sistema? – Tjelle

+0

Después de un poco de investigación, parece que los Locales son el equivalente nativo de Windows a los CultureInfo-s de .NET. Una descripción general aquí: http://msdn.microsoft.com/en-us/goglobal/bb688174.aspx No encontré ninguna manera de cambiar la ubicación del usuario mediante programación. Puede haber, así que tal vez no busqué lo suficiente. Puede haber alguna forma de hacer esto a través de un comando de línea de comando (¿una pregunta candidata ServerFault?). Si está dispuesto a experimentar, podría tratar de convertir temporalmente la cuenta de usuario en una interactiva (agregarla al grupo Usuarios), iniciar sesión y cambiar la configuración a través de la interfaz de usuario. –

Cuestiones relacionadas