依赖注入:没有为此对象定义无参数构造函数

2024-05-22

我正在尝试使用依赖项注入(.NET Framework 4.6、ASP.NET MVC),但收到错误:No parameterless constructor defined for this object.如果我还提供一个无参数构造函数HomeController then _token一片空白。

如何通过依赖注入正确提供这个对象?

欧文启动.cs:

public void ConfigureServices(IServiceCollection services)
{
    services.AddTransient<IGenerateToken, GenerateTokenService>();
}

控制器:

public class HomeController : Controller
{
    private readonly ueSecurityToken _token;


    public HomeController(ueSecurityToken token)
    {
        _token = token;
    }    

    public async Task<ActionResult> RunCreditCard()
    {
        var client = new UsaEPayClient();

        var request = new TransactionRequestObject
        {
            CreditCardData = new CreditCardData()
            {
                CardNumber = "4000100011112224",
                CardExpiration = "0919",
                CardCode = "123"
            }
        };
        var response = await client.runSaleAsync(_token, request);
        return View(response);
    }
}

生成令牌服务:

public ueSecurityToken GenerateToken(string key, string pin)
{
    var token = new ueSecurityToken
    {
        SourceKey = key,
        ClientIP = new WebClient().DownloadString("http://bot.whatismyipaddress.com/")
    };

    var hash = new ueHash
    {
        Type = "md5",
        Seed = Guid.NewGuid().ToString()
    };
    var input = string.Concat(token.SourceKey, hash.Seed, pin); // combine data into single string
    // Create a new instance of the MD5CryptoServiceProvider object.
    var md5Hasher = MD5.Create();
    // Convert the input string to a byte array and compute the hash.
    var data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(input));
    // Create a new Stringbuilder to collect the bytes
    // and create a string.
    var sBuilder = new StringBuilder();
    // Loop through each byte of the hashed data 
    // and format each one as a hexadecimal string.
    foreach (var t in data)
    {
        sBuilder.Append(t.ToString("x2"));
    }
    hash.HashValue = sBuilder.ToString();
    token.PinHash = hash;
    return token;
}

public interface IGenerateToken
{
    ueSecurityToken GenerateToken(string key, string pin);
}

当然你可以使用 DI。我更喜欢 Simple Injector,因为它很简单,而且大多数情况下它涵盖了所有场景。如需更多信息和高级功能,您可以使用 Autofac 或 Ninject。

但是你在控制器中的方法没有被 DI 击中。他们为类设置构造函数。所以你的 DI 在这种情况下没有用处。

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

依赖注入:没有为此对象定义无参数构造函数 的相关文章

  • 传递给函数时多维数组的指针类型是什么? [复制]

    这个问题在这里已经有答案了 我在大学课堂上学习了 C 语言和指针 除了多维数组和指针之间的相似性之外 我认为我已经很好地掌握了这个概念 我认为由于所有数组 甚至多维 都存储在连续内存中 因此您可以安全地将其转换为int 假设给定的数组是in
  • 无限循环与无限递归。两者都是未定义的吗?

    无副作用的无限循环是未定义的行为 看here https coliru stacked crooked com view id 24e0a58778f67cd4举个例子参考参数 https en cppreference com w cpp
  • 用于 FTP 的文件系统观察器

    我怎样才能实现FileSystemWatcherFTP 位置 在 C 中 这个想法是 每当 FTP 位置添加任何内容时 我都希望将其复制到我的本地计算机 任何想法都会有所帮助 这是我之前问题的后续使用 NET 进行选择性 FTP 下载 ht
  • C++ 多行字符串原始文字[重复]

    这个问题在这里已经有答案了 我们可以像这样定义一个多行字符串 const char text1 part 1 part 2 part 3 part 4 const char text2 part 1 part 2 part 3 part 4
  • 需要帮助优化算法 - 两百万以下所有素数的总和

    我正在尝试做一个欧拉计划 http projecteuler net问题 我正在寻找 2 000 000 以下所有素数的总和 这就是我所拥有的 int main int argc char argv unsigned long int su
  • 结构体的内存大小不同?

    为什么第一种情况不是12 测试环境 最新版本的 gcc 和 clang 64 位 Linux struct desc int parts int nr sizeof desc Output 16 struct desc int parts
  • VB.NET 中的静态方法实现

    我很困惑Static在 VB NET 中的实现 在 C 中 我们可以创建静态类和静态方法来为我们的应用程序编写实用方法 现在 VB NET 让我们创建Module代替静态类 如果我们在模块中创建一个方法 默认情况下它会变成静态的 但在我的应
  • 为什么 C# 2.0 之后没有 ISO 或 ECMA 标准化?

    我已经开始学习 C 并正在寻找标准规范 但发现大于 2 0 的 C 版本并未由 ISO 或 ECMA 标准化 或者是我从 Wikipedia 收集到的 这有什么原因吗 因为编写 审查 验证 发布 处理反馈 修订 重新发布等复杂的规范文档需要
  • 两个类可以使用 C++ 互相查看吗?

    所以我有一个 A 类 我想在其中调用一些 B 类函数 所以我包括 b h 但是 在 B 类中 我想调用 A 类函数 如果我包含 a h 它最终会陷入无限循环 对吗 我能做什么呢 仅将成员函数声明放在头文件 h 中 并将成员函数定义放在实现文
  • LINQ:使用 INNER JOIN、Group 和 SUM

    我正在尝试使用 LINQ 执行以下 SQL 最接近的是执行交叉联接和总和计算 我知道必须有更好的方法来编写它 所以我向堆栈团队寻求帮助 SELECT T1 Column1 T1 Column2 SUM T3 Column1 AS Amoun
  • C# 动态/expando 对象的深度/嵌套/递归合并

    我需要在 C 中 合并 2 个动态对象 我在 stackexchange 上找到的所有内容仅涵盖非递归合并 但我正在寻找能够进行递归或深度合并的东西 非常类似于jQuery 的 extend obj1 obj2 http api jquer
  • 为什么使用小于 32 位的整数?

    我总是喜欢使用最小尺寸的变量 这样效果就很好 但是如果我使用短字节整数而不是整数 并且内存是 32 位字可寻址 这真的会给我带来好处吗 编译器是否会做一些事情来增强内存使用 对于局部变量 它可能没有多大意义 但是在具有数千甚至数百万项的结构
  • 复制目录下所有文件

    如何将一个目录中的所有内容复制到另一个目录而不循环遍历每个文件 你不能 两者都不Directory http msdn microsoft com en us library system io directory aspx nor Dir
  • 如何在 Android 中使用 C# 生成的 RSA 公钥?

    我想在无法假定 HTTPS 可用的情况下确保 Android 应用程序和 C ASP NET 服务器之间的消息隐私 我想使用 RSA 来加密 Android 设备首次联系服务器时传输的对称密钥 RSA密钥对已在服务器上生成 私钥保存在服务器
  • 有没有办法让 doxygen 自动处理未记录的 C 代码?

    通常它会忽略未记录的 C 文件 但我想测试 Callgraph 功能 例如 您知道在不更改 C 文件的情况下解决此问题的方法吗 设置变量EXTRACT ALL YES在你的 Doxyfile 中
  • 在 WPF 中使用 ReactiveUI 提供长时间运行命令反馈的正确方法

    我有一个 C WPF NET 4 5 应用程序 用户将用它来打开某些文件 然后 应用程序将经历很多动作 读取文件 通过许多插件和解析器传递它 这些文件可能相当大 gt 100MB 因此这可能需要一段时间 我想让用户了解 UI 中发生的情况
  • C++ 继承的内存布局

    如果我有两个类 一个类继承另一个类 并且子类仅包含函数 那么这两个类的内存布局是否相同 e g class Base int a b c class Derived public Base only functions 我读过编译器无法对数
  • 为什么 std::uint32_t 与 uint32_t 不同?

    我对 C 有点陌生 我有一个编码作业 很多文件已经完成 但我注意到 VS2012 似乎有以下语句的问题 typedef std uint32 t identifier 不过 似乎将其更改为 typedef uint32 t identifi
  • DotNetZip:如何提取文件,但忽略zip文件中的路径?

    尝试将文件提取到给定文件夹 忽略 zip 文件中的路径 但似乎没有办法 考虑到其中实现的所有其他好东西 这似乎是一个相当基本的要求 我缺少什么 代码是 using Ionic Zip ZipFile zf Ionic Zip ZipFile
  • MySQL Connector C/C API - 使用特殊字符进行查询

    我是一个 C 程序 我有一个接受域名参数的函数 void db domains query char name 使用 mysql query 我测试数据库中是否存在域名 如果不是这种情况 我插入新域名 char query 400 spri

随机推荐

  • 有没有一种简单的方法可以在 R 的 igraph 中按度数对网络节点进行着色?

    使用igraphR 包 我想按度数对网络节点进行着色 颜色应代表渐变 例如从蓝色到红色 或从黄色到红色 从网络中观察到的最低程度到最高程度 我找到了一个可行的解决方案 https stackoverflow com questions 40
  • 阅读 Google 文档电子表格

    是否可以使用 PHP 从 Google Docs 电子表格中提取行 在 SQL 中我会使用类似的东西 SELECT FROM table WHERE field value LIMIT 1 有没有办法做到这一点 我听说你应该使用 Zend
  • SQL Server 中的每个实体自动增量字段?

    我的数据库中有一个稳定的 食物 主键为 fooD 我有第二个表 foo Attributes 其外键引用 foo fooD 我想在 fooAttributes 表上有一个组合键 fooID attributeNumber 当我插入新属性时
  • Java如何避免在循环中使用Thread.sleep()

    从我的主线程开始 我启动了两个线程 称为生产者和消费者 两者都包含while true 环形 生产者循环是 UDP 服务器 因此不需要睡眠 我的问题出在消费者循环中 消费者循环从链接队 列中删除对象并将其传递给函数以进行进一步处理 根据研究
  • 在 Bootstrap 4 中创建水平表单

    我是初学者引导程序我正在使用 bootstrap 来设计表单 我正在尝试使用创建水平形式form horizontal引导类BUT标签和文本字段未显示在同一水平线上 我看过有关它的教程 并且我从该教程中复制了相同的代码 但它对我不起作用 而
  • 布局引擎和javascript引擎的区别

    经过大量阅读 似乎当人们说浏览器引擎时 他们指的是诸如 gecko 或 webkit 之类的布局引擎 我还知道布局引擎基本上负责 绘制 屏幕 而javascript引擎则用于解释 但问题是 对于现代网络应用程序来说 哪一个对性能影响更大 这
  • Material-UI 4.8.1 API 更改 - 指定“组件”属性的新方法?

    Edit 这是 4 8 x 的打字错误 升级到 4 9 0 即可解决该问题 上版本4 8 0 以下代码编译并运行良好
  • Android 中读取未提交的事务

    我正在进行大量数据库操作 这会向我的数据库添加大约 10 000 条记录 由于这可能需要很长时间 因此最好使用事务 db startTransaction do write operations db setTransactionSucce
  • FirebirdSql 中参数的正确使用

    我想知道是否有人可以提供以下帮助 using FbConnection conn new FbConnection ConnectionString conn Open FbCommand command1 new FbCommand SE
  • Angular 4+为ngComponentOutlet动态创建的组件分配@Input

    在 Angular 4 中动态创建一个可以使用的组件ngComponentOutlet指示 https angular io docs ts latest api common index NgComponentOutlet directi
  • dayname(curdate()) 不适用于 codeigniter php

    此 sql 在 phpmyadmin 中有效 但在 codeigniter php 中无效 function getProgramsHomepage data array this gt db gt select p name p star
  • Android 中的短信编码

    我的问题是我想发送特定类别和特定编码的短信 0 类和 7 位编码 当检查 Android Telephony SmsManager 和 SmsMessage 时 您无能为力 SmsManager 提供两个功能 发送文本消息和发送数据消息 如
  • 为什么不允许 System.out.println(super) ?

    Why is System out println super 不允许 System out println this 这没问题并且this toString 自动调用并打印 当然 用实例变量代替也可以this 然而 this and su
  • 如何使用Jquery使用javascript运算符符号搜索表单列?

    实际上 我试图在搜索后获取单个表列值 如果我选择 运算符并在列中键入任何输入值 然后在搜索后 输入值将类似于匹配相似值的一行或多行 同样 如果我选择 运算符和此列 则将获得小于输入值的任何输入值 如果我选择 运算符 则小于或等于输入值将获得
  • Jquery 表单验证 - 电话号码

    我已经在表单上设置了 jQuery 验证 该验证当前测试电话号码字段不为空并且是一个数字 但我希望它能够处理用户在手机 区号后放置空格的情况 谁能建议我需要做什么才能允许这样做 这是我当前的代码 if phone length 0 name
  • ack造成的风暴延迟

    我正在使用 kafka storm 连接 kafka 和 Storm 我有3台服务器运行zookeeper kafka和storm kafka中有一个主题 test 有9个分区 在storm拓扑中 KafkaSpout执行器的数量为9 默认
  • 记录 pyarrow 在 S3 上创建的 parquet 文件名

    我们使用 pyarrow 将数据附加到存储在 S3 已分区 中的现有 Parquet 数据集 它每小时在 AWS lambda 上运行几次 一个最小的例子是 import pyarrow as pa import pyarrow parqu
  • 在 Android 中获取联系方式需要花费大量时间?

    您好 目前正在做一个与联系人相关的项目 我正在从联系人中获取详细信息 电子邮件 电话号码和联系人姓名 效果很好 但问题是获取联系方式需要很长时间 超过 1000 个联系人 包括从社交网站同步的联系人 这样我就放了一个Asynchronous
  • 使用 jQuery 提交一个又一个表单?

    如何设置自动队列系统来依次运行多个提交 我不希望他们立即提交 否则可能会破坏我的后端 PHP 脚本 这是一个简单的例子 假设每个表单都可以独立提交 并且主提交将串行运行所有表单
  • 依赖注入:没有为此对象定义无参数构造函数

    我正在尝试使用依赖项注入 NET Framework 4 6 ASP NET MVC 但收到错误 No parameterless constructor defined for this object 如果我还提供一个无参数构造函数Hom