我需要根据请求的区域性Cookie值修改DefaultModelBindingMessageProvidermessages
类的默认消息。我有一个localizer
服务,该服务接收键和路径并返回本地化的值。服务本身可以通过依赖项访问请求cookie。
问题是,当我像下面这样对startup.cs
类中的值进行本地化时,localizer
服务无法读取每个新请求的cookie值(它只读取第一个请求的cookie)。
services.AddMvc( options => {
const string path = "pathToResourcesFile";
var localizer = services.BuildServiceProvider().GetService<ILocalizer>();
options.ModelBindingMessageProvider.SetMissingKeyOrValueAccessor( () => localizer.Get( path, "MissingKeyOrValueAccessor" ) );
}
在我的脑海中(除非我完全脱离基础),我应该能够通过中间件修改MVC选项,以便可以针对每个请求重新读取文化cookie。但是,这就是我坚持的重点。
我尝试使用如下所示的自定义中间件,但是在中间件内部,我无法访问/修改MVC选项。
app.UseModelBindingLocalizationMiddleware(app.ApplicationServices);
感谢您的帮助!