使用 Castle.Windsor 设置 FluentValidation 时出现问题

2024-01-02

我有一个 asp.net MVC 4.5 应用程序,使用 Castle.Windsor 3.2.2 作为 DI,我第一次尝试添加 FluentValidation 版本 5.0.0.1。

我创建了继承自 ValidatorFactoryBase 的工厂

public class WindsorFluentValidatorFactory : ValidatorFactoryBase
{
    private readonly IKernel _kernel;

    public WindsorFluentValidatorFactory(IKernel kernel)
    {
        _kernel = kernel;
    }

    public override IValidator CreateInstance(Type validatorType)
    {
        return _kernel.HasComponent(validatorType)
                     ? _kernel.Resolve<IValidator>(validatorType)
                     : null;
    }
}

还创建了 Castle 的安装程序:

public class FluentValidatorsInstaller : IWindsorInstaller
{
    public void Install(IWindsorContainer container, IConfigurationStore store)
    {
        container.Register(
            Classes
                .FromThisAssembly()
                .BasedOn(typeof(IValidator<>))
                .WithService
                .Base());
    }
}

现在,在 Global.asax 中,我尝试(按照网络上的文档)挂钩如下内容:

var fluentValidationModelValidatorProvider = new FluentValidationModelValidatorProvider(new WindsorFluentValidatorFactory(container.Kernel));
ModelValidatorProviders.Providers.Add(fluentValidationModelValidatorProvider);

然而,第二行给出了以下错误:

“最佳重载方法匹配 'System.Collections.ObjectModel.Collection.Add(System.Web.Mvc.ModelValidatorProvider)' 有一些无效参数 参数 1:无法转换自 'FluentValidation.Mvc.WebApi.FluentValidationModelValidatorProvider' 到“System.Web.Mvc.ModelValidatorProvider”

所以,这种方法似乎不适用于我使用的版本。

我还尝试使用配置方法来挂钩它:

FluentValidationModelValidatorProvider.Configure(x => x.ValidatorFactory = new WindsorFluentValidatorFactory(container.Kernel));

但是,它不起作用。调试我在 ModelValidatorProviders.Providers 进行了检查,发现没有使用配置方法添加新的提供程序。

关于我可能做错了什么有什么想法吗? 谢谢,

Andres


解决了 我在另一个论坛中找到了解决方案,但我会发布对其他人有用的答案。 我使用了错误的提供商 有两种提供程序 - 一种用于 MVC,另一种用于 WebApi。看来我用的是WebAPI。

修改为FluentValidation.Mvc.FluentValidationModelValidatorProvide,问题解决


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Castle.Windsor 设置 FluentValidation 时出现问题 的相关文章

随机推荐

  • (excel 2013) 带有 VLOOKUP 函数的 3D 公式

    前段时间我在这里问过类似的问题单元格位置相同的 3D 公式 https stackoverflow com questions 25352610 excel 2013 dynamic change of formula depending
  • 非常简单的c ++:fstream中的运算符>>在读取某些内容后是否会删除换行符?

    file in 12 13 main cpp fstream f file in ios in int n char c f gt gt n f get c 提取数字12后 下一个字符是什么 是换行符还是 1 如果我调用 getline 而
  • Android 数据绑定与自定义视图

    The Android 数据绑定指南 http developer android com tools data binding guide html讨论了活动或片段中的绑定值 但是有没有办法使用自定义视图执行数据绑定 我想做这样的事情
  • 使用 OpenSSL.NET 和现有密钥解密 RSA

    我有以下代码使用 OpenSSL Net 生成 OpenSSL RSA 公钥和私钥 但是 我似乎找不到使用给定私钥解密数据的方法 我知道如果我调用生成密钥 然后调用相应的方法来加密和解密数据 它就可以正常工作 但是 如果我尝试从给定公钥的外
  • 找到R中两个数据帧之间的公共ID

    有以下数据框 id1 lt c 1 2 3 4 5 spent lt c 10 20 30 40 50 id2 lt c 1 3 4 x lt c 1 2 2 df1 lt data frame id1 spent df2 lt data
  • MVC 架构和模态对话框窗口

    我正在开发一个MVC架构的项目 它应该是一个管理一些客户的简单应用程序 MainModel MainView 和 MainController 类使主窗口显示客户表的内容并让用户插入 删除或编辑客户 我的问题是插入和编辑按钮应该显示一些对话
  • 将主键int类型更改为serial

    有没有办法在不删除表的情况下将现有主键类型从 int 更改为串行 我表里已经有很多数据了 我不想删除它 将 int 转换为序列或多或少仅意味着向值添加序列默认值 http www postgresql org docs 9 3 static
  • Kubernetes POD 参数未传递到服务,但 Docker 参数正确传递

    问题陈述 我已经成功创建了一个 Docker 镜像docker io joethecoder2 spring boot web 它已经使用命令行参数进行了测试 并且这些参数可以在 Docker 本地正常工作 我正在尝试将传递给 Docker
  • 推送视图应以透明背景显示

    我只是从一种观点推论另一种观点 在此代码之后 推送的视图将显示为透明 我之前已经用过很多次了 就这么简单 settings set settings alloc initWithNibName settings bundle nil set
  • req.body 无法作为数组读取

    我正在使用 node js 接收发布请求 请求正文在使用打印后具有此内容console log object 1 deviceType iPad Retina guid DF1121F9 FE66 4772 BE74 42936F1357F
  • 添加锚点到 RedirectToAction 结果?

    我正在尝试创建一个类似于的扩展方法MVCContrib 的 RedirectToAction 方法 http mvccontrib codeplex com SourceControl changeset view c0a43d6843a7
  • iOS Foundation:系统字体大小

    我想知道iOS应用程序tableView中的systemFontSize是否是always文本标签也一样吗 这是取决于风格 例如当我NSLog f UIFont systemFontSize 我已经14 0了这总是一样的吗 更重要的是 如何
  • 创建具有多个选项的 Python 函数的最佳方法?

    我定义了一堆自定义函数 并发现其中很多包含一些相同或相似的代码块 例如 仅包含略有不同的字符串或参数 所以像这样 def func1 a b c some identical code some similar code more iden
  • 有没有办法将 Linux 管道设置为非缓冲或行缓冲?

    我的程序正在控制 Linux 上的外部应用程序 通过管道将输入命令传递到外部应用程序 stdin 并通过管道从外部应用程序 stdout 读取输出结果 问题在于 对管道的写入是按块缓冲的 而不是按行缓冲的 因此在我的应用程序接收外部应用程序
  • 如何在 Bigquery 中查询多个 Firebase 项目?

    如何放置 Select 查询以从多个 Firebase 项目中提取数据 如何在单个查询中查询 abc 项目和 xyz 项目 目前 我正在放置两个查询来从项目 abc 和 xyz 及其数据集表中提取数据 查询abc项目 SELECT app
  • 如何使用低级 8 位标志作为条件?

    在我的键盘钩子中 每次按键都会有一个标志 表明它是否被注入 http msdn microsoft com en us library ms644967 VS 85 aspx http msdn microsoft com en us li
  • 2d std::vector 连续内存?

    考虑下面的代码 它分配了一个 2dstd vector
  • chmod 757 安全吗?

    由于我在共享主机上 我想添加一个图像托管脚本 似乎755不允许我上传图像 所以我将文件夹更改为757 chmod到757安全吗 一句话 不 用两个字来说 见鬼 不 让我们解释一下757 那就是 所有者 读写执行 对文件具有权限的组 读取 执
  • 在 MS Access 中插入具有日期范围的多条记录

    希望有人可以帮忙吗 我对 Access 2016 还很陌生 我的任务是为我们学校的早餐和课后俱乐部构建一个非常简单的预订系统 我有一个包含儿童列表的表 主键是 ChildID 另一个表 CLUBS 列出了 5 个可用的俱乐部 第三个表 BO
  • 使用 Castle.Windsor 设置 FluentValidation 时出现问题

    我有一个 asp net MVC 4 5 应用程序 使用 Castle Windsor 3 2 2 作为 DI 我第一次尝试添加 FluentValidation 版本 5 0 0 1 我创建了继承自 ValidatorFactoryBas