根据每个请求修改MVC选项

时间:2020-04-03 13:55:20

标签: asp.net-mvc asp.net-core-2.2 asp.net-core-middleware asp.net-core-localization

我需要根据请求的区域性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);

感谢您的帮助!

0 个答案:

没有答案