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
我怎样才能解决这个问题呢?
谢谢你
你为什么要使用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;
});
#2楼
得票数 1
增加以下方法,用于流畅的自动验证。这也将修复过时的警告
builder.Services.AddFluentValidationAutoValidation();
builder.Services.AddFluentValidationClientsideAdapters();
builder.Services.AddValidatorsFromAssembly(typeof(SignUpRequestModelValidator).Assembly);
#3楼
得票数 1
我也得到了一个类似的错误。
试试fluentValation.AspNetCore 11.1.2及以下版本的软件包。
错误已解决。
我希望它对你有用。
#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();