asp.net core 自定义中间件和service
首先新建项目看下main方法:
public static void Main(string[] args)
{
var host = new WebHostBuilder()
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>()
.Build(); host.Run();
}
main方法
其中,UseStartup<Startup>()方法使用了Startup类,在Startup类,有ConfigureServices和Configure方法,调用顺序是先ConfigureServices后Configure。
下面生成自定义的Service:
public interface IMService
{
string GetString();
} public class MService:IMService
{
public string GetString()
{
return "这是我的服务";
}
}
可以在ConfigureServices中这样使用:
services.AddSingleton<IMService, MService>();
或者
services.AddScoped<IMService, MService>();
或者
services.AddTransient<IMService, MService>();
这三个方法的作用都一样,只是生成实例的方式不一样,Singleton是所有的service都用单一的实例,Scoped 是一个请求一个实例,Transient 每次使用都是新实例。
也可以使用依赖注入的方式添加服务
public static class MServiceExtensions
{
public static void AddMService(
this IServiceCollection services)
{
services.AddScoped<IMService,MService>();
}
}
这样就可以在ConfigureServices中这样用:services.AddMService();
下面自定义一个middleware
public class MMiddleware
{
private RequestDelegate nextMiddleware; public MMiddleware(RequestDelegate next)
{
this.nextMiddleware = next;
} public async Task Invoke(HttpContext context)
{
context.Items.Add("middlewareID",
"ID of your middleware");
await this.nextMiddleware.Invoke(context);
}
}
同样的,可以在Configure方法中这样使用:app.UseMiddleware<MMiddleware>();
也可以
public static class MyMiddlewareExtensions
{
public static IApplicationBuilder UseMMiddleware
(this IApplicationBuilder app)
{
return app.UseMiddleware<MMiddleware>();
}
}
就可以app.UseMMiddleware(); 在controller中可以
public IActionResult Index()
{
ViewBag.str= service.Getstring();
ViewBag.MiddlewareID = HttpContext.Items["middlewareID"];
return View();
}
asp.net core 自定义中间件和service的更多相关文章
- 如何在ASP.NET Core自定义中间件中读取Request.Body和Response.Body的内容?
原文:如何在ASP.NET Core自定义中间件中读取Request.Body和Response.Body的内容? 文章名称: 如何在ASP.NET Core自定义中间件读取Request.Body和 ...
- asp.net core 自定义中间件【以dapper为例】
在asp.net core开发中.按照国际案例开始.都是先在Nuget安装XXX包.比如我们今天要用到的Dapper nuget里面安装Dapper 1.然后新建一个类文件DapperExtensio ...
- ASP.NET Core自定义中间件的方式
ASP.NET Core应用本质上,其实就是由若干个中间件构建成的请求处理管道.管道相当于一个故事的框架,而中间件就相当于故事中的某些情节.同一个故事框架采用不同的情节拼凑,最终会体现出不同风格的故事 ...
- asp.net core 自定义中间件
官方文档:https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/middleware/?view=aspnetcore-2.1 中间件的定 ...
- asp.net core 自定义异常处理中间件
asp.net core 自定义异常处理中间件 Intro 在 asp.net core 中全局异常处理,有时候可能不能满足我们的需要,可能就需要自己自定义一个中间件处理了,最近遇到一个问题,有一些异 ...
- asp.net core mvc 中间件之WebpackDevMiddleware
asp.net core mvc 中间件之WebpackDevMiddleware WebpackDevMiddleware中间件主要用于开发SPA应用,启用Webpack,增强网页开发体验.好吧,你 ...
- asp.net core 自定义认证方式--请求头认证
asp.net core 自定义认证方式--请求头认证 Intro 最近开始真正的实践了一些网关的东西,最近写几篇文章分享一下我的实践以及遇到的问题. 本文主要介绍网关后面的服务如何进行认证. 解决思 ...
- asp.net core 使用中间件拦截请求和返回数据,并对数据进行加密解密。
原文:asp.net core 使用中间件拦截请求和返回数据,并对数据进行加密解密. GitHub demo https://github.com/zhanglilong23/Asp.NetCore. ...
- ASP.NET Core:中间件
一.什么是中间件 我们都知道,任何的一个web框架都是把http请求封装成一个管道,每一次的请求都是经过管道的一系列操作,最终才会到达我们写的代码中.而中间件就是用于组成应用程序管道来处理请求和响应的 ...
随机推荐
- python面试十题
问题1: 请问如何修改以下python代码,使得下面的代码调用类A的show方法? class A(): def show(self): print("base show") cl ...
- September 25th 2017 Week 39th Monday
No man is rich enough to buy back his own past. 没有人富有到可以赎回自己的过去. Those rich are not willing to buy b ...
- ZT 用gdb调试core dump文件
用gdb调试core dump文件 转载自:http://blog.chinaunix.net/u2/83905/showart_2134570.html 在Unix系统下,应用程序崩溃,一般会产生c ...
- LRU算法的精简实现(基于Java)
LRU(Least recently used,最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是"如果数据最近被访问过,那么将来被访问的几率也更高". impo ...
- P2110 欢总喊楼记
题目描述 诗经有云: 关关雎鸠,在河之洲.窈窕淑女,君子好逑. 又是一个被风吹过的夏天--一日欢总在图书馆中自习,抬起头来,只见一翩跹女子从面前飘过,真是回眸一笑百媚生,六宫粉黛无颜色!一阵诗情涌上欢 ...
- 模拟器配置Burpsuite抓取https包
在模拟器中设置代理,长按WiredSSID会弹出菜单: 点击修改网络: 显示高级选项打勾,然后设置代理ip,也就是你运行burp的机器ip: 然后导出burp的证书: 设置保存的路径和文件名: 模拟器 ...
- Sequelize-nodejs-10-Hooks
Hooks钩子 Hooks (also known as lifecycle events), are functions which are called before and after call ...
- Nginx如何配置静态文件直接访问
其实前面在这篇文章Nginx之动静分离中已经提到过如何配置静态文件直接访问,今天突然再写是因为之前写的不够完善,所以这一篇文章你可以理解为是在前一个基础上的扩展. 之所以下午临时想到这个,是因为之前搭 ...
- R函数-时间序列ETS参数说明
alpha\beta\gamma分别代表水平.趋势.季节分量的平滑参数α.β.γ.这三个参数我们希望接近于0,以便于更平滑,即越小越平滑.在乘法模型的情况下,参数需要非常低,否则模型会对噪声太敏感. ...
- 企业案例 【故障修复】mysql主从故障解决过程
由于配置有zabbix监控,某日收到zabbix监控主从报警,,查看mysql状态, showslave status \G; slave复制状态有误,SLAVE_SQL_RUNNING为NO, 接着 ...