ASP.NET Core Web API - FluentValidationMvcExtensions.AddFluentValidation(IMvcBuilder, Action)' is obsolete: 'Calling AddFluentValidation() is deprecated

回答 4 浏览 1885 2022-08-18

在ASP.NET Core-6 Web API中,我使用的是FluentValidation.AspNetCore(11.2.1)。

我在Program.cs里有这样的代码。

builder.Services.AddMvc().AddFluentValidation(fv => {
    fv.DisableDataAnnotationsValidation = true;
    fv.RegisterValidatorsFromAssembly(typeof(Program).Assembly);
    fv.RegisterValidatorsFromAssembly(Assembly.GetExecutingAssembly());
    fv.ImplicitlyValidateChildProperties = true;
    fv.ImplicitlyValidateRootCollectionElements = true;
    fv.AutomaticValidationEnabled = true;
});

但我得到了这个错误,上面所有的代码都被高亮显示。

FluentValidationMvcExtensions.AddFluentValidation(IMvcBuilder, Action)' is obsolete: 'Calling AddFluentValidation() is deprecated

我怎样才能解决这个问题呢?

谢谢你

Ayobamilaye 提问于2022-08-18
你有没有研究过文档?也许特别是标有自动验证的部分。这不再被推荐。Xerillio 2022-08-18
你为什么要使用AddMVC()?Manish 2022-08-18
我认为这是版本问题,我从FluentValidation.AspNetCore(11.2.1)改为FluentValidation.AspNetCore(11.0.0),它可以工作。谢谢Ayobamilaye 2022-08-18
我建议使用最新的版本,并修改代码。Manish 2022-08-18
看来你的问题是compatibility issue。你应该将AutomaticValidationEnabled 设置为false来解决这个错误。Md Farid Uddin Kiron 2022-08-19
4 个回答
#1楼 已采纳
得票数 1

根据文档(https://docs.fluentvalidation.net/en/latest/aspnet.html),不建议使用自动验证。

所以我建议不要使用自动验证,并删除AddMvc(),因为自动验证与AddMvc一起工作,https://github.com/FluentValidation/FluentValidation/issues/1377

现在让我们来看看你的问题,假设你使用的是.net6,下面的代码应该可以正常工作。

using FluentValidation.AspNetCore;

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddFluentValidation(conf =>
{
 conf.RegisterValidatorsFromAssembly(typeof(Program).Assembly);
 conf.AutomaticValidationEnabled = false;
});
Manish 提问于2022-08-18
#2楼
得票数 1

增加以下方法,用于流畅的自动验证。这也将修复过时的警告

builder.Services.AddFluentValidationAutoValidation();
builder.Services.AddFluentValidationClientsideAdapters();
builder.Services.AddValidatorsFromAssembly(typeof(SignUpRequestModelValidator).Assembly);
Rahul Jaiswal 提问于2022-10-16
Ticherhaz FreePalestine 修改于2022-10-22
#3楼
得票数 1

我也得到了一个类似的错误。

试试fluentValation.AspNetCore 11.1.2及以下版本的软件包。

错误已解决。

我希望它对你有用。

Hakan Bayazıt 提问于2022-10-19
Hakan Bayazıt 修改于2022-10-27
#4楼
得票数 0

我们可以在这个网址上查看FluentValidation的文档。https://github.com/FluentValidation/FluentValidation/issues/1965

例如:

// Before 
services.AddFluentValidation(options => {
  options.RegisterValidatorsFromAssemblyContaining<MyValidator>();
});

// After migration:
services.AddFluentValidationAutoValidation();
services.AddFluentValidationClientsideAdapters();
services.AddValidatorsFromAssemblyComtaining<MyValidator>();



// Before: Enabling auto-validation and disabling clientside validation
services.AddFluentValidation(config => 
{
  config.ConfigureClientsideValidation(enabled: false);
});

// After: Enabling auto-validation only
services.AddFluentValidationAutoValidation();



// Before: Disabling auto-validation and leaving clientside validation enabled:
services.AddFluentValidation(config => 
{
  config.AutomaticValidationEnabled = false;
});

// After: Enabling client validation only:
services.AddFluentValidationClientsideAdapters();
Tang Thanh Tam 提问于2022-11-22