用 Ninject 拦截。无法加载 IProxyRequestFactory

2024-01-10

我正在学习使用 Ninject 和 Interceptor 模式。

我有以下拦截器。

public class MyInterceptor:IInterceptor
{
    public void Intercept(IInvocation invocation)
    {
        Console.WriteLine("Pre Execute: " + invocation.Request.Method.Name);

        foreach (var param in invocation.Request.Arguments)
        {
            Console.WriteLine("param : " + param);
        }

        invocation.Proceed();

        Console.WriteLine("Post Execute: " + invocation.Request.Method.Name);
        Console.WriteLine("Returned: " + invocation.ReturnValue);
    }
}

并且有一个名为MyClass它只有两个简单的方法,虚拟的,允许拦截器对其进行工作。 (两种方法是 Echo 和 double,顾名思义。)

我通过 NuGet 将 Ninject、Ninject.Extensions.Interception 和 Ninject.Extensions.Interception.DynamicProxy 添加到我的项目中。

添加了以下内容using声明。

using Ninject;
using Ninject.Extensions.Interception.Infrastructure.Language;
using Ninject.Extensions.Interception;

我的 Main 方法,它的引导看起来像这样。

static void Main(string[] args)
    {
        MyClass o = null;

        using (IKernel kernel = new StandardKernel())
        {

            kernel.Bind<MyClass>().ToSelf().Intercept().With(new MyInterceptor());
            o = kernel.Get<MyClass>();
        }

        o.Echo("Hello World!"); // Error
        o.Double(5);
    }

我在指定行收到以下错误。

Error loading Ninject component IProxyRequestFactory
No such component has been registered in the kernel's component container.

Suggestions:
  1) If you have created a custom subclass for KernelBase, ensure that you have  properly
     implemented the AddComponents() method.
  2) Ensure that you have not removed the component from the container via a call to RemoveAll().
  3) Ensure you have not accidentally created more than one kernel..

谁能告诉我我做错了什么?


好的,我终于能够重现(忘记将 MyClass 方法设为虚拟)。我解决这个问题的方法是从内核周围删除 using 块:

    static void Main(string[] args)
    {
        MyClass o = null;

        var kernel = new StandardKernel();
        kernel.Bind<MyClass>().ToSelf().Intercept().With(new MyInterceptor());
        o = kernel.Get<MyClass>();

        o.Echo("Hello World!"); // Error
        o.Double(5);
        Console.ReadKey(true);
    }

我的原因是guessing这是有效的,因为它在幕后创建了一个代理类MyClass并以某种方式传递IKernel到代理。当您(在代理上)调用该方法时,它会返回内核并解决一些额外的依赖关系(包括IProxyRequestFactory)。由于您正在处理它,因此它不再能够解决该依赖性。

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

用 Ninject 拦截。无法加载 IProxyRequestFactory 的相关文章

  • 如何使用 bash 脚本通过 tar 备份文件系统?

    我想备份我的 ubuntu 文件系统 我写了这个小脚本 这是非常基本的 但这是我第一次尝试 我害怕犯错误 由于需要几个小时才能完成才能看到结果 因此我认为最好向经验丰富的程序员询问我是否做错了什么 我特别感兴趣 gt 会记录输出mv或者它也
  • Java 中的下载管理器 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我需要通过 FTP HTTP 从 Java 获取几个大文件 几个演出 有现成的库 java 命令行工具
  • 从其对象获取结构体字段的名称和类型

    例如 我有一个类似这样的结构 struct Test int i float f char ch 10 我有一个该结构的对象 例如 Test obj 现在 我想以编程方式获取字段名称和类型obj 是否可以 顺便说一句 这是 C 你正在要求C
  • Hibernate Envers:如何捕获谁删除了审计表中的实体

    我在用hibernate envers with spring 一切工作正常 除了当我删除一个实体时 它不会改变的值updated by and updated date在审计表内 它会在之后保存一个与之前完全相同的实体 仅复制 sprin
  • 如何打印Oracle中过程的定义?

    oracle中有没有办法查看过程的结构是什么 我正在尝试记录并运行程序 并希望将实际的程序结构存储在我的日志中 您可以查询ALL SOURCE table SELECT text FROM all source WHERE owner lt
  • 真实值与预测值的降维可视化

    我有一个数据框 如下所示 label predicted F1 F2 F3 F40 major minor 2 1 4 major major 1 0 10 minor patch 4 3 23 major patch 2 1 11 min
  • 在magento Attributes中添加自定义属性并显示在前端

    我已经开始使用 magento 作为我的电子商务 cms 我知道这是一个非常强大的平台 最近 我发现它的功能可以帮助开发人员扩展核心 并且我已经成功添加了自定义类别选项 是否有机会在某个属性上达到相同的结果 我想在属性选项卡上添加文本描述并
  • 如何将 Terraform 状态从一个远程存储移动到另一个远程存储

    我们使用 Azure blob 存储作为 Terraform 远程状态 并且我尝试将有关特定现有资源的状态信息移动到该存储帐户中的不同容器 新容器 terraforminfra v2 已存在 现有 Terraform 代码指向旧容器 ter
  • 解析用户周围的位置

    您好 我开发了一个应用程序 我想问一个问题 在我的数据云解析中 我有 餐馆 类 我有三列 名称 类型字符串 imageFile 类型文件 description 类型数组和 Location 类型GeoPoint 我想知道使用哪种方法来获取
  • Eclipse:如何增加查找/替换历史记录?

    查找 替换对话框显示最后 8 个条目 该对话框通过 Ctrl F 显示 我想增加 查找 和 替换为 输入字段的历史记录中显示的条目数 我必须搜索并替换几个字符串和正则表达式 因此我一次又一次地输入字符串和正则表达式 我并不是指文件内容更改的
  • 在 Oracle 中使用触发器记录对表的更改

    我的一门课有一个项目 当我们的两个表发生更改时 我们需要创建一个日志 插入 更新 删除 我们需要使用Oracle触发器和PL SQL 在日志文件中 我们需要记录用户ID 日期时间 IP地址和事件 插入 更新 删除 我知道如何设置触发器 但我
  • 是否有与 pdl2(或 Devel::REPL)中的 perl 调试器“x”等效的东西?

    我在用pdl2 the PDL http p3rl org PDLshell 也作为我的默认 Perl 交互式 shell 它加载所有不错的插件Devel REPL http search cpan org perldoc Devel 3a
  • 从 C/C++ 程序进行 Ping

    我想编写一个 C 或 C 程序 给定一个 IP 地址 对其进行 Ping 然后根据 Ping 是否成功执行进一步的操作 这个怎么做 尽情享受Ping 页面 http www ping127001 com pingpage htm 其中有一个
  • 在 MVC4 中使函数异步时 HttpContext.Current null

    我目前正在 VS2010 SP1 中开发 MVC4 我做了其中一个功能 控制器类异步 作为其中的一部分 我制作了控制器类 派生自 AsyncController 并添加了以下两个方法 参见代码部分 1 和 2 下 一种以 Async 结尾的
  • simple_fields_for 没有出现 [rails 4]

    我正在尝试创建两个隐藏字段 其中一个显示没有问题 但来自嵌套表单的另一个则没有 产品 rb class Product lt ActiveRecord Base has many product options dependent dest
  • 将文件传递给活动作业/后台作业

    我通过标准文件输入接收请求参数中的文件 def create file params file upload Upload create file file filename img png end 但是 对于大型上传 我想在后台作业中执行
  • 如何在 Laravel 中创建一条包罗万象的路线

    我需要一个 Laravelroutes php将捕获所有流量到特定的条目example com premium section网站 以便我可以提示人们在访问优质内容之前成为会员 您还可以通过在参数上使用正则表达式来捕获 全部 Route g
  • SQL 大表中的随机行(使用 where 子句)

    我有一个网站 人们可以在其中对汽车进行投票 向用户展示 4 辆汽车 他 她可以投票选出他们最喜欢的汽车 桌子cars有重要的列 car id int 10 not auto increment so has gaps views int 7
  • IOError:在 Linux 上的 ReportLab 中使用 matplotlib PNG 时“解码器 zip 不可用”,适用于 Windows

    我正在使用 ReportLab 打印 matplotlib 生成的图表 我可以在我的 Windows 开发机器上毫无问题地执行此操作 然而 当我部署到 Ubuntu 服务器时 渲染失败并出现所述错误 我假设我缺少一个 Python 模块 但
  • 使用 TkInter 绑定设置不可交互(点击)覆盖

    我已经浏览了其他几篇关于类似问题的帖子 所有这些似乎都指向this https stackoverflow com questions 29458775 tkinter see through window not affected by

随机推荐

  • 如何设置 HTTP 标头(用于缓存控制)?

    如何为我的网站启用浏览器缓存 我是否只是将cache control public 像这样放在我的标头中 我正在使用最新版本的 PHP 在最新版本的 XAMPP 上进行开发 要在 HTML 中使用缓存控制 您可以使用meta tag htt
  • 如何使用asp.net从文件夹中删除特定文件

    这是我的交易 我得到了一个名为 gridview1 的 datagridviewer 和一个 fileupload1 当我上传文件时 它会使用文件名和路径更新数据库中的 gridview1 和表 并将所述文件存储在文件夹 Mag 中 但现在
  • Bootstrap-Angular-ui 加载时模态

    我在用Bootstrap Angular UI 模态 http angular ui github io bootstrap modal对于我正在开发的网站 我用来打开模式的代码 modal open templateUrl home te
  • 缺少调试|项目的任何 CPU 构建配置,并在 Windows x64 上默认为调试|x86

    我最近刚刚在我的机器上重新安装了 Windows 7 x64 安装成功 整个操作系统没有出现任何问题 我认为 Windows 或 NET x64 存在配置问题 Symptoms 新项目的默认构建配置是调试 x86 这感觉不对 我正在运行 x
  • 测试 Google 应用内时退款测试购买

    我退款时遇到麻烦 当我登录发布商控制台时 它会显示我的购买和 取消整个订单 按钮 退款 按钮呈灰色 付款是使用测试帐户完成的 该应用程序尚未发布 我如何才能拿回我的钱 即使我通过测试帐户退款 Google 仍会向我收取 30 的费用吗 您必
  • 在MySql中使用空间函数查找两个坐标之间的距离的正确方法

    我正在尝试使用 Mysql 和 PostgresSQL 中的空间函数来计算两个位置之间的距离 我从谷歌获取了纬度和经度 详情如下 位置一 纬度 42 260223 经度 71 800010 位置二 纬度 42 245647 经度 71 80
  • 在 PyTorch 中加速 SVD

    我正在使用 Pytorch 为 CIFAR10 执行一些分类任务 对于每次迭代 我都必须对每个批次进行一些预处理 然后才能将其反馈给模型 以下是每个批次的预处理部分的代码 S torch zeros batch size C H W for
  • Python 定义迭代器类失败,并显示“iter() 返回了‘Fib’类型的非迭代器”

    我正在使用 python 2 7 和 ipython2 7 在 ipython 中我尝试过 class Fib object def init self max super Fib self init self max max def it
  • 在 Magento 中获取基本产品图像

    我想要得到baseMagento 中的产品图像可调整其大小并显示在购物车侧边栏中 不幸的是 echo this gt helper catalog image gt init product image gt resize 38 38 打印
  • MSIE 9 中的“GET”ting AngularJS 资源返回空数组

    Problem 当使用GET来自一个的请求 resource 仅在 Microsoft Internet Explorer 9 中 成功的响应是空数组 Tests 成功场景 使用 FF 或 Chrome GET请求返回开发环境和本地环境中的
  • 包装应用

    我们有一个 Windows 应用程序 我们使用 Wise 进行部署 最近我们改用InstallAware 虽然它有一些优点 但我们面临一些问题 有人可以推荐另一个部署和打包应用程序吗 我们是一家小公司 没有专门的人员进行打包等工作 我们的软
  • kubernetes 秘密在环境变量中有尾随空格

    我在 GKE 上运行的 Kubernetes 1 9 中创建了一个部署 该部署利用了放入环境变量中的机密 我使用 yaml 文件将机密上传到 GKE 其中机密经过 Base64 编码 我在容器中看到的是环境变量在那里 但值包含尾随空格 如果
  • 为什么 sockaddr_in 中需要零填充?

    我用谷歌搜索了一下 有些人说 与 struct sockaddr 保持相同的大小 但内核不会直接使用 sockaddr 对吗 使用时 内核会将其恢复到原来的样子 那么为什么需要零填充呢 struct sockaddr unsigned sh
  • 实体框架 - 无效的列名称“*_ID”

    我已将问题范围缩小到 Code First 和 Database First EF 之间的某个问题 但我不确定如何修复它 我会尽力说得清楚 但老实说 我自己也缺少一些理解 这是实体框架 4 4 我继承了一个使用实体框架的项目 但许多实际文件
  • Cloud Pub/Sub:即使注册域名后,HTTP URL 也未注册

    我有一个 Google Pub Sub 项目 并创建了一个主题和一个简单的订阅 但是 当指定推送的 URL 时 我不断收到以下错误 我已完成站点验证过程并在 API 和服务中注册了域 如中所述https cloud google com p
  • 为什么 PHP 将字母 E 的字符串转换为数字?

    为什么下面的语句会返回true 608E 4234 272E 3063 我也尝试过在字符串周围使用单引号 我可以让它评估的唯一方法false是通过使用 运算符而不是 我的猜测是 PHP 将其视为某种方程式 但这似乎有点奇怪 有人可以详细说明
  • 在Java中一次导入所有子包[重复]

    这个问题在这里已经有答案了 Java中是否可以一次性导入所有子包 据我所知 这在 C 中似乎是可能的 C 如何一次性导入命名空间 https stackoverflow com questions 4806986 c how to impo
  • ASP.NET Core Identity 中基于临时会话的声明

    在 ASP NET Core Identity 中添加声明非常简单 但我无法找到如何添加基于临时会话的声明 我的用例是这样的 具有自己的自定义声明的登录用户需要定期添加新声明 但仅限于当前会话 而不是持久化到数据库 当他们关闭浏览器或退出后
  • 如何从 plist 文件中提取字符串进行翻译(本地化)?

    我需要准备用于翻译 iPhone 应用程序的字符串列表 我已经从中提取了字符串使用 genstring 的 m 文件 and 使用 ibtool 从 XIB 文件中命令 但我也有plist 文件中需要翻译大量文本 字符串字段类型包含在str
  • 用 Ninject 拦截。无法加载 IProxyRequestFactory

    我正在学习使用 Ninject 和 Interceptor 模式 我有以下拦截器 public class MyInterceptor IInterceptor public void Intercept IInvocation invoc