ASP.NET MVC 6 中 FilterAttribute 内的依赖注入

2023-11-22

我正在努力使用 ASP.NET MVC 6(beta 4 版本)尝试在类型的控制器过滤器属性中注入服务AuthorizationFilterAttribute.

这是服务(它注入了另一个服务)

public class UsersTableRepository
{
    private readonly NeurosgarContext _dbContext;

    public UsersTableRepository(NeurosgarContext DbContext)
    {
        _dbContext = DbContext;
    }

    public ICollection<User> AllUsers
    {
        get
        {
            return _dbContext.Users.ToList();
        }
    }

    //other stuff...
}

这是Startup类中的ConfigureServices方法,用于启用服务

  public void ConfigureServices(IServiceCollection services)
  {
        //...

        services.AddSingleton<NeurosgarContext>(a => NeurosgarContextFactory.GetContext());
        services.AddSingleton<UifTableRepository<Nazione>>();
        services.AddSingleton<UsersTableRepository>();
  }

一个简单的“虚拟”控制器,上面定义了两个过滤器。您可以注意到,我已经通过用以下内容装饰属性来在该控制器内完成了 DI[FromServices]它有效。

[Route("[controller]")]
[BasicAuthenticationFilter(Order = 0)]
[BasicAuthorizationFilter("Admin", Order = 1)]
public class DummyController : Controller
{

    [FromServices]
    public UsersTableRepository UsersRepository { get; set; }

    // GET: /<controller>/
    [Route("[action]")]
    public IActionResult Index()
    {
        return View();
    }
}

执行相同的 DIBasicAuthenticationFilter不工作并且在运行时UserRepository属性是空引用。

public class BasicAuthenticationFilterAttribute : AuthorizationFilterAttribute
{
    [FromServices]
    public UsersTableRepository UsersRepository { get; set; }

    public override void OnAuthorization(AuthorizationContext filterContext)

    {
        if (!Authenticate(filterContext.HttpContext))
        {
            // 401 Response
            var result = new HttpUnauthorizedResult();
            // Add the header for Basic authentication require
            filterContext.HttpContext.Response.Headers.Append("WWW-Authenticate", "Basic");
            filterContext.Result = result;

            //if (!HasAllowAnonymous(context))
            //{
            //    base.Fail(context);
            //}
        }
    }
    // ...
}

知道如何解决这个问题吗?


避免将依赖项注入到属性中,如所解释的那样here。做你的被动属性,或者将你的属性设置为不起眼的物体如上所述here.

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

ASP.NET MVC 6 中 FilterAttribute 内的依赖注入 的相关文章

  • sitecore 站点内嵌套虚拟目录或应用程序是否可能

    我想将 ASP NET Web 应用程序嵌套在 sitecore 站点中 如下所示
  • 发布时出错:System.DirectoryServices.DirectoryServicesCOMException

    我在我的 asp net MVC 解决方案中使用 AD 身份验证 它在本地服务器中工作 但是当我发布它时 我收到错误 System DirectoryServices DirectoryServicesCOMException 发生操作错误
  • 在asp net mvc中简单的图像上传

    我正在构建一个简单的学校门户 我一直坚持将图像上传到我的应用程序中 即用户应该将学校图像上传到我的服务器 我的图像目录为 Content Images 所有上传图像都应该上传到这个目录 我有以下代码 input type file id S
  • 如何以一种形式发布两个或多个模型?

    我正在为一个项目开发互联网课程计划应用程序 该课程计划是根据以下模型构建的 使用数据库优先方法中的实体框架生成 public partial class Subject public int Id get set public string
  • 基于 Web.Config 使用的 GAC 程序集版本

    Good Day 我有一个在 GAC 中使用自定义程序集的项目 为了能够使用它 我在中添加了对我的项目的引用 C WINDOWS Microsoft NET assembly GAC MSIL JOHN CommonLib v4 0 1 0
  • MVC 重定向到没有控制器的视图

    希望应该是一个简单的 我创建了一个通用错误视图 当整个站点的操作方法内发生异常时 我想显示该视图 我创建了一个部分页面 所有导航都位于其中 因此我不需要在此视图上使用控制器 那么如何从控制器内的操作方法重定向到它 像这样的东西 HttpPo
  • 获取 SignalR hub 内的完整 URL

    我正在使用 SignalR 开发一个用户跟踪解决方案 作为学习 SignalR 的有趣项目 用于 ASP NET MVC 应用程序 目前我可以跟踪登录的用户以及他们在特定页面上停留的时间 如果他们移动到另一个页面 我也会跟踪该页面 并且 S
  • 从呈现的控件 ID 中删除 ctl00$ContentBody$

    我对现有的应用程序进行了一些更改 该应用程序以前只是简单的 HTML 和 Javascript 为了添加服务器端功能 我选择了 ASP NET 并利用了母版页概念 不幸的是 在一个巨大的 Web 表单上 控件 ID 全部被 ctl00 Co
  • 在多个网页(.cshtml 文件)中使用 Razor @functions

    我有以下功能 我希望可用于我的 asp net 网页 2 应用程序中的多个 cshtml 视图 如何使该功能可用于应用程序中的任何视图 而不是仅一个视图 functions public bool DisplayButton String
  • MVC 音频控制从字节播放歌曲

    我将歌曲作为 bytes 存储在数据库中 我如何在
  • 我应该对 ObjectContext 使用 using 关键字吗?

    我在这个网站或 CodeProject 的某个地方读到 好的规则是 如果某个类已经实现了 IDisposable 接口 那么您应该使用 using 关键字 因为使用翻译成 MSIL 的关键字会尝试 最终阻止如下内容 try some log
  • ASP.NET MVC ActionFilterAttribute 在模型绑定之前注入值

    我想创建一个自定义操作过滤器属性 该属性在模型绑定期间可访问的 HttpContext 项中添加一个值 我尝试将其添加到 OnActionExecuting 中 但似乎模型绑定是在过滤器之前执行的 你知道我该怎么做吗 也许模型绑定器中有一个
  • 基于网络的应用程序中的图表

    可使用 ASP NET 在网页上显示图表的各种图表工具有哪些 我了解 Dundas 和 Infragistics 等商业工具 我可以用谷歌搜索这个 但我想知道参与者使用过的各种工具 任何可用的免费图表工具也欢迎提及 如果您不介意使用 Fla
  • 过滤两次 Lambda Java

    我有一个清单如下 1 2 3 4 5 6 7 和 预期结果必须是 1 2 3 4 5 6 7 我知道怎么做才能到7点 我的结果 1 2 3 4 5 6 我也想知道如何输入 7 我添加了i gt i objList size 1到我的过滤器
  • VSTS/TFS设置环境变量ASP.NET core

    我正在尝试使用 VSTS 将 ASP NET Core 应用程序部署到 IIS 并执行以下任务 然而 经过多次谷歌搜索和浏览 MS 文档后 我找不到为部署设置环境变量的方法 我在环境范围的发布定义中设置的变量未设置为环境变量 知道如何实现这
  • Android 手机作为 GSM 调制解调器在 PC 上发送/接收短信?

    是否可以将 Android 移动设备用作 PC 上的 GSM 调制解调器 我正在 net下开发应用程序来发送 接收短信等 现在我想通过 USB 将我的 Android 设备连接到我的 PC 并将其用作 GSM 调制解调器来与其通信 这里是参
  • ClickOnce 应用程序错误:部署和应用程序没有匹配的安全区域

    我在 IE 中使用 FireFox 和 Chrome 的 ClickOnce 应用程序时遇到问题 它工作正常 异常的详细信息是 PLATFORM VERSION INFO Windows 6 1 7600 0 Win32NT Common
  • 使用 LINQ2SQL 在 ASP.NET MVC 中的各种模型存储库之间共享数据上下文

    我的应用程序中有 2 个存储库 每个存储库都有自己的数据上下文对象 最终结果是我尝试将从一个存储库检索到的对象附加到从另一个存储库检索到的对象 这会导致异常 Use 构造函数注入将 DataContext 注入每个存储库 public cl
  • 回发后刷新时提示确认表单重新提交。我做错了什么?

    我有一个以空白 默认状态启动的仪表板 我让用户能够将保存的状态加载到仪表板中 当他们单击 应用 按钮时 我运行以下代码 function CloseAndSave var radUpload find radUpload1ID var in
  • C# 中的合并运算符?

    我想我记得看到过类似的东西 三元运算符 http msdn microsoft com en us library ty67wk28 28VS 80 29 aspx在 C 中 它只有两部分 如果变量值不为空 则返回变量值 如果为空 则返回默

随机推荐

  • PDF 中需要 Arial 字体(BIRT pdf 渲染器,Linux)

    我使用 BIRT IDE 创建了一个 rptdesign 文件 该文件内容采用 Arial 字体 当我在 Windows 中将报告导出为 PDF 时 它工作正常 我使用默认的viewerServlet 来创建报告 但是当我将报告移动到Lin
  • 在 JavaScript 中实现单例的最简单/最干净的方法

    实现最简单 最干净的方法是什么单例模式在 JavaScript 中 我认为最简单的方法是声明一个简单的对象文字 var myInstance method1 function method2 function 如果您希望单例实例上有私有成员
  • 如何在 Python 中将列表分割成连续的非零整数组

    似乎无法在网上找到这方面的线索 并且我自己也无法弄清楚 所以 我将如何对列表进行切片 以便返回连续非零整数切片的列表 IE data 3 7 4 0 1 3 7 我想生产 slices 3 7 4 1 3 7 我尝试过各种迭代列表的方法 一
  • 如何向 UICollectionView 添加背景图像,该图像将滚动和缩放单元格

    我正在使用构建马赛克视图UICollectionView 我已经子类化了UICollectionViewFlowLayout布局一个可以滚动的固定网格水平和垂直 我还附上了一个UIPinchGestureRecognizer这样集合就可以缩
  • 带有 pandas 的多个堆叠条形图

    我正在尝试用 pandas 制作多个堆叠条形图 但遇到了问题 这是示例代码 import pandas as pd df pd DataFrame a 10 20 b 15 25 c 35 40 d 45 50 index john bob
  • IE8/9 中的 CORS 与 jQuery 和 XDomainRequest

    UPDATE 我强烈建议不要在 XDomainRequest 上投入任何时间 因为它是一个非常糟糕的实现 有很多限制 它基本上只适用于对非 ssl 服务器的 GET 请求 所以你不妨使用 jsonp 或其他什么 我正在使用 CORS 调用跨
  • 使 TinyMCE 图像选择对话框指向 Plone 上的默认文件夹

    克隆人 4 1 使 TinyMCE 图像选择器对话框指向站点默认文件夹 image bank 而不是当前文件夹的最简单方法是什么 这个 文件夹显示为相册将为 Plone 轻松提供基本的图像库支持 我希望能够实现这个功能 所有 Plone 开
  • SSIS - 再次出现内存不足错误

    我有 cca 25 个数据库 需要将其合并为 1 个数据库 首先 我尝试构建一个 ssis 包 它将每个表中的所有数据复制到一个地方 但随后出现错误 信息 缓冲区管理器的内存分配调用失败 10485760 字节 但无法交换任何缓冲区来缓解
  • 可能的 Java 编译器错误!程序无法使用某些编译器编译

    首先 介绍一点背景知识 如果不感兴趣 可以跳过一点 我很生气又很困惑 这应该是一个非常简单的用例 而且确实是我的代码has使用 Eclipse JDT 编译器编译得很好 所以到目前为止我一直在配置 Maven 以确保做到这一点 尽管它不能使
  • Python 装饰器对递归函数进行计时

    我有一个简单的装饰器来跟踪函数调用的运行时 def timed f def caller args start time time res f args end time time return res end start return c
  • 在VS 2015社区版中将.Net框架从4.5.2更改为4.5时出现编译错误

    在 VS 2015 社区版中将我的 Net 框架从 4 5 2 更改为 4 5 后 我收到以下错误 有谁知道问题是什么以及如何解决这个问题 看起来编译版本不同 但我已经将 web config 修改为 4 5 应用程序中的服务器错误 编译错
  • Apollo 2.0.0 Graphql cookie 会话

    有人可以帮助我吗 在 Apollo 2 0 之前我的设置如下 我有一个 server js 其中使用了express和graphql server express 我有一个仅 http 的 cookie 会话 当用户登录时 我将 jwt 令
  • R 在多个数据框列中查找值

    给定一个数据集 其中值可以位于数据帧中任意一组列中 df lt data frame h1 c a b c a a b c h2 c b c d b c d b h3 c c d e e e d c 如何获得指定哪些行包含目标值的逻辑向量
  • 将 Amazon RDS 表名称重命名为大写字母会引发错误

    我将 MySQL 数据库表导入到 Amazon RDS 我的问题是我的查询不再有效 并且收到错误消息 表明我的表 文件夹 不存在 原因是表名不全是小写 导致查询抛出这个错误 有没有一种方法可以使用 MySQL Workbench 针对 Am
  • 如何删除最后一个字符

    如何删除字符串的最后一个字符substring或者什么 例如 var query String begin query test 1 line 5 end 输出必须是 query gt test1 line 5 第三个选项是这样的 SetL
  • Python 中使用 pop() 进行列表操作

    简而言之 我需要根据索引从列表中删除多个项目 但是 我不能使用 pop 因为它会改变索引 没有一些笨拙的补偿系统 有没有办法同时删除多个项目 我有一个遍历列表的算法 如果条件正确 则通过 pop 方法删除该项目 由于这一切都是在循环中完成的
  • 错误 file_get_contents():读取 8192 字节失败,errno=21

    我有一个简单的脚本 它在每个子文件夹的每个文件中搜索给定的字符串 它工作得很好 直到我相信我的 PHP 已更新 我不太确定是否是因为这个 这是代码
  • 重叠两个盒子喷气背包组成

    我试图重叠两个Box或者也许更好用Row关于这个案子 我的设计是一个Row与另一个重叠 我把它包裹在一个Column 那是对的吗 这就是设计 我想要的是顶部的矩形与下面的矩形大小相同 然后将其移动一些像素 如图所示 但它们应该具有相同的宽度
  • 如何将自定义协议映射到 Mac 上的应用程序?

    我正在尝试向 Mac 上的应用程序注册自定义协议 即 用户点击 abcdef some url here 链接 已安装的应用程序将启动 并将上述字符串作为第一个参数传递 我已经使用此问题中的信息在 Windows 上成功完成了此操作 如何创
  • ASP.NET MVC 6 中 FilterAttribute 内的依赖注入

    我正在努力使用 ASP NET MVC 6 beta 4 版本 尝试在类型的控制器过滤器属性中注入服务AuthorizationFilterAttribute 这是服务 它注入了另一个服务 public class UsersTableRe