首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在动作过滤器上使用Unity和asp.net mvc执行属性注入?

在Unity和ASP.NET MVC中执行属性注入的方法如下:

  1. 首先,确保已经安装了Unity和ASP.NET MVC框架。
  2. 在Unity中,创建一个接口和实现类,以便在ASP.NET MVC中注入。例如,创建一个接口IMyService和实现类MyService
代码语言:csharp
复制
public interface IMyService
{
    string GetData();
}

public class MyService : IMyService
{
    public string GetData()
    {
        return "Hello from MyService!";
    }
}
  1. 在ASP.NET MVC中,创建一个控制器并添加一个属性,该属性将使用Unity进行注入。例如,在HomeController中添加一个IMyService属性。
代码语言:csharp
复制
public class HomeController : Controller
{
    [Dependency]
    public IMyService MyService { get; set; }

    public ActionResult Index()
    {
        ViewBag.Message = MyService.GetData();
        return View();
    }
}
  1. 在Unity中,注册MyService实现类并将其映射到IMyService接口。
代码语言:csharp
复制
var container = new UnityContainer();
container.RegisterType<IMyService, MyService>();
  1. 在ASP.NET MVC中,将Unity容器与依赖注入框架集成。可以通过创建一个自定义的依赖注入属性提供程序来实现这一点。
代码语言:csharp
复制
public class UnityDependencyAttribute : Attribute, IDependencyResolver
{
    private readonly IUnityContainer _container;

    public UnityDependencyAttribute(IUnityContainer container)
    {
        _container = container;
    }

    public object GetService(Type serviceType)
    {
        try
        {
            return _container.Resolve(serviceType);
        }
        catch
        {
            return null;
        }
    }

    public IEnumerable<object> GetServices(Type serviceType)
    {
        try
        {
            return _container.ResolveAll(serviceType);
        }
        catch
        {
            return new List<object>();
        }
    }
}
  1. 在ASP.NET MVC中,将自定义的依赖注入属性提供程序添加到控制器工厂。
代码语言:csharp
复制
var container = new UnityContainer();
container.RegisterType<IMyService, MyService>();

DependencyResolver.SetResolver(new UnityDependencyAttribute(container));

现在,在ASP.NET MVC中使用Unity和属性注入时,HomeController将自动注入MyService实现类。这样,您就可以在ASP.NET MVC中使用Unity和属性注入来执行依赖注入了。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

ASP.NET MVC5高级编程 ——(6)过滤器

2、所谓的过滤器(Filters),MVC框架里面的过滤器完全不同于ASP.NET平台里面的Request.FiltersResponse.Filter对象,它们主要是实现请求和响应流的传输。...通常我们所说的过滤器是指MVC框架里面的过滤器。 3、过滤器可以注入一些代码逻辑到请求处理管道中,是基于C#的Attribute的实现。...使用内置的授权过滤器 MVC框架内置的授权过滤器AuthorizeAttribute,它允许我们使用这个类的两个公共属性来指定授权策略,如下所示: ? ?...需要注意的是:如果一个动作方法的所有异常过滤器均为把ExceptionHandled属性设置为true,MVC框架将使用默认的ASP.NET异常处理程序。...总结:本文章简单总结了对过滤器的理解以及如何使用MVC框架内置基本的过滤器如何自定义过滤器及应用。

2.3K40

C# .NET面试系列七:ASP.NET Core

第一部分:ASP.NET Core1. 如何在 controller 中注入 service?...它支持构造函数注入属性注入等方式。5、模块化可插拔性ASP.NET Core 采用了模块化的设计,允许开发者只使用他们实际需要的组件。这种可插拔性使得开发更加灵活,能够更好地构建和扩展应用程序。...通过以上步骤,你就可以在ASP.NET Core中使用Filter并支持依赖注入。这种方式允许你使用依赖注入容器(ASP.NET Core的内置容器)来注入Filter所需的服务。6....2、MVC中的异常过滤器MVC中,可以使用异常过滤器来处理ControllerAction中的异常。你可以在Controller或Action应用ExceptionHandler特性。...MVC中,可以使用全局过滤器处理所有ControllerAction中的异常。

28010
  • ASP.NET MVC5+EF6+EasyUI 后台管理系统-WebApi的用法与调试

    1:ASP.NET MVC5+EF6+EasyUI 后台管理系统(1)-WebApi与Unity注入 使用Unity是为了使用我们后台的BLLDAL层 2:ASP.NET MVC5+EF6+EasyUI...后台管理系统(2)-WebApi与Unity注入-配置文件 3:ASP.NET MVC5+EF6+EasyUI 后台管理系统(3)-MVC WebApi 用户验证 (1) 4:ASP.NET MVC5...+EF6+EasyUI 后台管理系统(4)-MVC WebApi 用户验证 (2) 以往我们讲了WebApi的基础验证,但是有新手经常来问我使用的方式 这次我们来分析一下代码的用法,以及调试的方式...Api帮助文档 我们新建的WebApi集成了微软自带的HelpPage,即Api的文档,在我们编写好接口之后会自动生成一份文档 配置HelpPage,非常简单,分两步 设置项目属性的输出XML文档 ?...从图中可以看出,每一个控制器的接口都会列出来,并根据注释参数生成文档,全自动 点击接口可以看到参数请求方式 ?

    2.1K30

    如何使用Serilog.AspNetCore记录ASP.NET Core3.0的MVC属性

    在这篇文章中,我将展示如何在过滤器使用IDiagnosticContext,以及将MVC特定值添加到日志中。...我还将展示如何在page过滤器中添加RazorPages特定的值(HandlerName)。 使用自定义过滤器记录MVC属性 过滤器相当于为每个请求运行的类似于MVC的微型中间件管道。....Action过滤器执行MVC操作方法之前之后运行。他们可以访问许多MVC属性的值,例如正在执行的Action及其将被调用的参数。 下面的Action过滤器直接实现IActionFilter。...我的方法可以改用构造函数注入,但是不建议将其用作属性,因此必须如上所述全局使用。而且,MVC将在我的实现中使用作用域生存期,而不是单例,因此它会在每个请求中创建一个新实例。...使用自定义page过滤器记录RazorPages属性 上面实现的IActionFilter过滤器MVCAPI控制器能够正常运行,但它不会对RazorPages起作用。

    3.6K10

    ASP.NET MVC Controller激活系统详解:IoC的应用

    该项目在Codeplex的地址为http://unity.codeplex.com/, 你可以下载相应的安装包开发文档。Unity的最新版本为2.1。...其中属性B在构在函数中被初始化,以为着它会以构造器注入的方式被初始化;属性C应用了DependencyAttribute特性,意味着这是一个需要以属性注入方式被初始化的依赖属性属性D则通过方法Initialize...这个简单的程序分别体现了接口注入(通过相应的接口根据配置解析出相应的实现类型)、构造器注入属性B)、属性注入属性C)方法注入属性D)。...ASP.NET MVC所谓的Model仅仅表示绑定到View的数据,我们一般称之为View Model。...而真正的Model一般意义指维护应用状态提供业务功能操作的领域模型,或者是针对业务层的入口或者业务服务的代理。真正的MVCASP.NET MVC中的体现如下图所示。 ?

    1.8K90

    ASP.NET MVC编程——验证、授权与安全

    为限制控制器只能执行HTTPS,使用RequireHttpsAttribute 2 授权 对账户的权限的控制可以通过在控制器或控制器操作加AuthorizeAttribute 属性。...主动注入:用户将含有恶意脚本的内容输入到页面文本框中,然后在屏幕显示出来。...,每次执行控制器操作前,都会验证隐藏栏位浏览器cookie中的值是否相同,只有相同才允许执行控制器操作。...仅仅是一定程度上限制这种攻击而已) 4)使用动作过滤器,验证UrlReferrer 扩展的动作过滤器: public class CSRFFilter:AuthorizeAttribute {...Scott Allen,孙远帅/邹权译  ASP.NET MVC4 高级编程(第四版) 3.黄保翕,ASP.NET MVC4开发指南 4.蒋金楠,ASP.NET MVC4框架揭秘 5.https://www.asp.net

    3.1K60

    ASP.NET Core依赖注入深入讨论

    通常,您希望将组件(应用程序范围的配置容器)注册为Singleton。数据库访问类(Entity Framework上下文)建议使用Scoped,以便可以重复使用连接。...ASP.NET Core提供了很多扩展方法,使注册各种生命周期的服务其他设置更加方便。...Controller基类(技术讲,ControllerBase最好)的HttpContext属性可用的RequestServices。...您也可以通过在特定的Action添加参数,并使用FromServicesAttribute特性对其进行装饰来注入所需的服务,这会指示MVC Core从服务集合中获取它,而不是尝试对其进行模型绑定。...过滤器 MVC过滤器也支持构造函数注入,以及有权访问RequestServices: public class TestActionFilter : ActionFilterAttribute {

    2.2K10

    ASP.NET Core 基础知识】--MVC框架--Models和数据绑定

    return View(); } 在这个例子中,ProcessRequest 方法同时接收表单数据查询字符串数据。 这些例子展示了如何在控制器的动作方法中使用数据绑定特性,从不同的来源获取数据。...HTML5表单验证: HTML5引入了一些新的表单元素属性,可以用于在客户端执行一些基本的验证, required、pattern、min、max 等。...模型验证器通常是在模型的属性应用的验证特性,但有时你可能需要执行更复杂的验证,例如涉及多个属性的验证逻辑或依赖外部服务的验证。...这个简单的例子涵盖了基本的模型绑定概念,以及如何在控制器视图中使用它们。在实际应用程序中,可以根据业务需求扩展这些概念,并使用更复杂的模型、验证器绑定器。...这样可以使代码更加模块化、可测试可维护。 使用依赖注入使用ASP.NET Core的内置依赖注入容器,将服务注入到控制器、视图其他组件中。

    56610

    《ASP.ENT Core 与 RESTful API 开发实战》(第3章)-- 读书笔记(中)

    ,还有属性注入方法注入 当应用程序中有多处要用到依赖注入时,就需要一个专门的类来负责管理创建所需要的类并创建所有它可能要用到的依赖,这个类就是依赖注入容器,也可以称为控制反转容器,IOC 容器 在 ASP.NET...在 ASP.NET Core MVC 框架中,除了 Controller、Model Action 外,它还包括路由、模型绑定、模型验证过滤器等功能 路由的主要功能是根据预先配置的路由信息对客户端传来的请求进行路由映射...实现 IValidatableObject 接口 过滤器:与中间件很相似,在 ASP.NET Core MVC 中,它们能够在某些功能的前后执行,由此形成一个管道 ASP.NET Core MVC 提供了以下...,后者异步,实现一个即可 在 startup 种注册过滤器会使它影响到应用中的每个 Action,如果要仅为一个或少数几个 Action 添加过滤器,就得使用特性,ASP.NET Core 为每一种类型的过滤器都定义了相应的特性...] 特性,并设置它们的 Type 属性为自定义过滤器类型 [ServiceFilter] 特性与 [TypeFilter] 特性的区别是前者会从容器中获取过滤器实例,而后者不会,它使用 ObjectFactory

    1.2K10

    ASP.NET MVC5+EF6+EasyUI 后台管理系统(60)-系统总结

    我当初对技术的选型很是简单,从简单的开发方式学习成本人员考虑,大家都认知的技术方式,可以克服开发过程中团队人 员的更换(离职,新人) 选择的技术都是从大流行架构精粹出来,并不使用非常大型的底层框架,培训学习成本极高...,从学习到开发需要一个漫长的过程,这也是老板们不愿意看到的 同时也考虑到应用系统的使用负担并不是极大 So: Asp.net MVC、EF、IOC容器、EasyUI、分层分模块、基于接口 MVC:目前适用所有前端应用的部署...,大型访问量的系统并不适合   同时ORM显然也没有生的SQL语句来得更加直接,但是易用性开发速度上毋庸置疑 注入注入容器我在各大流行的IOC注入容器中选择了Unity,在当时综合来看,Unity在像流行的...,特别是开发速度上显示,虽然更加轻量级,但是你最后会为交互挠破了你自己的头,不信你可以试试看。...Extjs,jqgrid等等。 11,12,13节:是本系统的日志、异常处理方式,日志可以记录用户的每个动作,异常可以让开发人员快速得到问题定位。

    1.8K91

    MVC使用 ASP.NET Core 6.0 的Minimal API

    ASP.NET Core MVC 应用程序中,控制器负责接受输入、执行或编排操作并返回响应。它是一个功能齐全的框架,通过过滤器、内置模型绑定验证、约定基于声明的行为等提供可扩展的管道。...通过属性路由,您可以使用指定 HTTP 动词路径的属性来装饰控制器动作: [ApiController] [Route("[controller]")] public class WeatherForecastController...过滤器可以访问您在 ASP.NET 中间件中没有的其他上下文。这是允许内置验证中间件自动执行的原因,因为它能够在模型绑定发生后运行。...MVCMVC 应用程序中,使用[Authorize]属性装饰您的控制器/或操作以指定您的授权要求。此属性允许您指定角色策略。...尽管很容易将它们视为“代码较少的 API”,但主要的好处是您拥有一个轻量级的基础,您可以在此基础挑选所需的组件,而不是像 MVC 那样沉重的东西,后者可能包含许多出色的功能你不使用(例如过滤器)。

    7.6K10

    ASP.NET Web API中的依赖注入什么是依赖注入ASP.NET Web API依赖解析器使用Unity解析依赖配置依赖解析

    我们可以使用注入一个ProductRepsoitory来解决这个问题,首先重构ProductRepository的方法到一个接口中: namespace Pattern.DI.MVC.Models {...,你同样可以使用设置器注入的方式,ASP.NET Web API在为请求映射了路由之后创建控制器,而且现在他不知道任何关于IProductRepository的细节,这是通过API依赖器解析到的。...使用Unity解析依赖 虽然你可以重头开始写一个IDenpendencyResolver的实现,但是这个接口已经设计了可以作为ASP.NET Web APIIoC工具的桥梁。...首先在项目中使用NuGet Package Manage Console安装Unity,关于Unity的介绍可以点击这里查看详细。...container.Dispose(); } } } 配置依赖解析 在全局的HttpConfiguration对象中DependencyResolver属性设置依赖解析器

    2.2K80

    ASP.NET MVC5+EF6+EasyUI 后台管理系统(63)-WebApi与Unity注入

    前言: 有时候我们系统需要开放数据给手机App端或其他移动设备,不得不说Asp.net WebApi是目前首选 本节记录Asp.net MVC WebApi怎么利用Unity注入。...系列开头已经讲解了普通的Asp.net MVC如何用Unity注入容器 不明白什么是IOC,DI,控制反转的自行百度补脑,否则无法阅读本文 其实这也是一次技术的记录,因为找遍大百度居然没有可以用的利用...才能完成本节的指导 为了更好的理解,请下载代码 示例代码下载   https://yunpan.cn/cRTHt5MuKavwH 访问密码 0a47 (这是一个已经包含了Unity注入的普通MVC例子)...包含4个需要被注入的类库,BLL,IBLL,DAL,IDAL 开发工具:VS2013+SQL2012(数据库不是必要) 开始: 1.新建Asp.Net MVC WebApi项目 ?...如果断点执行到调用处,那么恭喜你,注入顺利成功,可以调用了(配图为返回数据库第一条数据的ID,数据脚本在源码下载查看) ?

    1.2K50

    MVC 3.0 的新特性 摘要

    前言 ASP.NET MVC3 在 ASP.NET MVC 1 2 的基础,增加了大量的特性,使得代码更加简化,并且可以深度扩展。...控制器的改进 全局的 Action 过滤器 有的时候你希望能够在在一个 Action 方法执行之前或者执行之后执行一些处理逻辑,在 ASP.NET MVC2 中,提供了 Action 过滤器,允许对特定控制器的...Action 方法进行处理,实际,有时候你希望对所有的 Action 都进行类似的处理,MVC3 允许你将过滤器加入到 GlobalFilters 集合中来创建全局的过滤器,详细的介绍,参考下列资源...集成 ASP.NET MVC3 自动安装启用 NuGet ,NUGet 是免费开源的一个包管理器,使得在你的项目中容易发现,安装,使用 .NET 库。...在请求验证中的粒度控制 ASP.NET MVC 内建了请求验证机制来自动帮助处理类似跨站攻击 HTML 注入等等。

    2.6K10

    Asp.Net Core中使用ModelConvention实现全局过滤器隔离

    在一个web程序中同时包含了MVCWebAPI,现在需要给WebAPI部分单独添加一个接口验证过滤器IActionFilter,常规做法一般是写好过滤器后给需要的控制器挂上这个标签,高级点的做法是注册一个全局过滤器...应用程序模型有关的类都定义在命名空间Microsoft.AspNetCore.Mvc.ApplicationModels中,这些模型通过IApplicationModelProvider 构建出来,Asp.Net...说到这里,很多人会觉得这玩意儿自定义过滤器看起来差不多,最开始我也这么认为,但经过实际代码调试我发现它的生命周期要比过滤器早的多,或者说根本无法比较,这个家伙只需要在应用启动时执行一次并不用随着每次请求而执行...Asp.Net Core MVC框架提供的ServiceFilter可以解决这个问题,ServiceFilter本身是一个过滤器,它的不同之处在于能够通过构造函数接收一个Type类型的参数,我们可以在这里把真正要用的过滤器传进去...突然想起来我上篇文章提到的扩展DI属性注入功能估计也能通过这个玩意实现,eeeeeee...有空了试一下。

    1.2K40

    ASP.NET Core MVC应用模型的构建: 定制应用模型

    这里所谓的“执行Action”不仅仅包括针对目标方法的执行,还需要执行应用在该Action的一系列过滤器。...过滤器使我们可以很容易地“干预”针对目标Action的执行流程,它们可以直接注册到Action方法,也可以注册到Controller类型,甚至可以在应用范围进行全局注册,所以MVC框架为这些包含过滤器注册的模型节点...代码片段所示,它会利用注入的IServiceProvider对象来提供ApplicationModelFactory对象。...Core MVC应用模型的构建[1]: 应用的蓝图 ASP.NET Core MVC应用模型的构建[2]: 应用模型 ASP.NET Core MVC应用模型的构建[3]: Controller模型...ASP.NET Core MVC应用模型的构建[4]: Action模型

    14110
    领券