Tengo el requisito de que el usuario final puede cambiar los recursos localizados y los cambios deben ser visibles en la aplicación sin la necesidad de reiniciar la aplicación.Localización de ASP.NET: ¿Cambia recursos sin reiniciar la aplicación?
actualización para aclarar el panorama:
estoy hablando de cambiar los recursos localizados en tiempo de ejecución. Digamos que tengo un error tipográfico en la traducción al alemán de una página. Entonces, algún usuario administrador debería tener la posibilidad de cambiar ese error tipográfico en tiempo de ejecución. No debería haber necesidad de una reasignación o reinicio para que este cambio se refleje en la IU.
Estoy usando ASP.NET MVC3.
¿Qué opciones tengo?
He estado buscando escribir custom ResourceProvider que cargue recursos de la base de datos.
esto no parece demasiado esfuerzo, sin embargo hasta el momento he señalado dos inconvenientes:
- No está trabajando con los DataAnnotations que se utilizan para la validación conveniente en MVC3 (DataAnnotations trabajan con un parámetro ErrorMessageResourceType, que sólo trabaja con recursos compilados)
- Básicamente, tenemos que proporcionar nuestras propias herramientas para administrar recursos (como traducir, etc.) lo cual es una pena, ya que hay muchas herramientas para esto que funcionan con resx-files.
¿Cuáles son las otras opciones? ¿Sería una opción la manipulación de los archivos resx desplegados en tiempo de ejecución?
Pero sospecho que la aplicación se "reinicia" automáticamente cuando detecta esos cambios: sospecho que ASP.NET se da cuenta de que los archivos resx han cambiado, luego recicla el grupo de aplicaciones y compila los nuevos archivos resx en el mosca.
¿Es esto correcto? ¿Hay alguna forma de evitar esto?
Todavía no he examinado la compilación de los recursos en ensamblajes satélite antes de la implementación. ¿Es este un escenario recomendado para aplicaciones web?
Pero incluso con ensambles satelitales compilados sospecho que ASP.NET reinicia la aplicación, cuando esos ensambles se cambian sobre la marcha. ¿Es esto correcto?
Me interesaría cualquier experiencia sobre cómo se puede cumplir el requisito original? Y me interesaría cualquier comentario sobre las opciones que he mencionado anteriormente.
¿Has probado el UpdatableResXResourceProvider propuesto en [esta respuesta] (http://stackoverflow.com/questions/1535027/app-domain-restarts-when-resx-file-changes-any-way-to-avoid-this/1853530 # 1853530)? –
Lo siento, lo he entendido mal, para cambiar los recursos existentes en el tiempo de ejecución Creo que su única opción es un proveedor de recursos personalizado, pero no he visto ninguna solución limpia para resolver el problema de las anotaciones de datos sin recurrir a las anotaciones personalizadas. – TheCodeKing
Tengo una forma de hacerlo, pero solo si las claves de recursos están corregidas. – TheCodeKing