Estoy trabajando en un proyecto web api.
Tengo algunos valores clave almacenados en el archivo json de configuración de la aplicación.
Configuré los patrones de opciones para que la configuración de json se asigne a un objeto. Estoy leyendo que el patrón de opciones tiene un alcance único de forma predeterminada. Esto significa que, ante la primera solicitud de un controlador, la opción inyectada se inicializará con valores del json.
Ahora, cuando cambio un valor en el archivo json, ¿debo reiniciar la aplicación para asegurarme de que la solicitud posterior tendrá el valor de configuración más reciente? ¿O hay alguna forma de hacer que la opción tenga un alcance para que en cada solicitud obtenga el valor más reciente de la configuración?
Esto se explica en los documentos, en Patrón de opciones en ASP.NET Core . La forma en que lea los ajustes de configuración depende de la interfaz que utilice. Esto se describe en la sección con el título poco intuitivo Interfaces de opciones . Dudo que alguien pensaría en ir a esa sección si uno no supiera ya, por ejemplo IOptionsMonitor .
Como esa sección explica:
Imagine tratar de calcular un precio mientras cambia la configuración de una tarifa o comisión. Esto puede ser molesto.
Usted especifica cómo desea recuperar los valores utilizando la interfaz adecuada en su controlador, BackgroundService u otra clase de servicio DI, por ejemplo:
class MyController:ControllerBase { IOptionsSnapshot<Fees> _fees; public MyController(IOptionsSnapshot<Fees> feeOptions) { _fees=feeOptions' } ... }La sección Use IOptionsSnapshot para leer datos actualizados ofrece más ejemplos