ASP.NET Core 开发-中间件(Middleware)
2016-05-29 07:16
821 查看
ASP.NET Core开发,开发并使用中间件(Middleware)。
中间件是被组装成一个应用程序管道来处理请求和响应的软件组件。
每个组件选择是否传递给管道中的下一个组件的请求,并能之前和下一组分在管道中调用之后执行特定操作。
具体如图:

1.新建一个asp.net core项目,选择空的模板。


然后为项目添加一个 Microsoft.Extensions.Logging.Console
NuGet 命令行 ,请使用官方源。
Install-Package Microsoft.Extensions.Logging.Console -Pre
2.新建一个类: RequestIPMiddleware.cs
3.再新建一个:RequestIPExtensions.cs
这样我们就编写好了一个中间件。
在 Startup.cs 添加 app.UseRequestIP()
然后运行程序,我选择使用Kestrel 。
访问:http://localhost:5000/

成功运行。
这里我们还可以对这个中间件进行进一步改进,增加更多的功能,如限制访问等。
原文地址:http://www.cnblogs.com/linezero/p/5529767.html
.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注
中间件是被组装成一个应用程序管道来处理请求和响应的软件组件。
每个组件选择是否传递给管道中的下一个组件的请求,并能之前和下一组分在管道中调用之后执行特定操作。
具体如图:
开发中间件(Middleware)
今天我们来实现一个记录ip 的中间件。1.新建一个asp.net core项目,选择空的模板。
然后为项目添加一个 Microsoft.Extensions.Logging.Console
NuGet 命令行 ,请使用官方源。
Install-Package Microsoft.Extensions.Logging.Console -Pre
2.新建一个类: RequestIPMiddleware.cs
public class RequestIPMiddleware { private readonly RequestDelegate _next; private readonly ILogger _logger; public RequestIPMiddleware(RequestDelegate next, ILoggerFactory loggerFactory) { _next = next; _logger = loggerFactory.CreateLogger<RequestIPMiddleware>(); } public async Task Invoke(HttpContext context) { _logger.LogInformation("User IP: " + context.Connection.RemoteIpAddress.ToString()); await _next.Invoke(context); } }
3.再新建一个:RequestIPExtensions.cs
public static class RequestIPExtensions { public static IApplicationBuilder UseRequestIP(this IApplicationBuilder builder) { return builder.UseMiddleware<RequestIPMiddleware>(); } }
这样我们就编写好了一个中间件。
使用中间件(Middleware)
1.使用在 Startup.cs 添加 app.UseRequestIP()
public void Configure(IApplicationBuilder app, ILoggerFactory loggerfactory) { loggerfactory.AddConsole(minLevel: LogLevel.Information); app.UseRequestIP();//使用中间件 app.Run(async (context) => { await context.Response.WriteAsync("Hello World!"); }); }
然后运行程序,我选择使用Kestrel 。
访问:http://localhost:5000/
成功运行。
这里我们还可以对这个中间件进行进一步改进,增加更多的功能,如限制访问等。
原文地址:http://www.cnblogs.com/linezero/p/5529767.html
.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注
相关文章推荐
- Asp.Net网站的的编译与发布原理
- SpringMVC中的java.lang.ClassNotFoundException: org.aspectj.weaver.BCException 调试过程记录
- windows通过 VNC 远程连接树莓派3 (raspbian系统)
- 【无私分享:从入门到精通ASP.NET MVC】从0开始,一起搭框架、做项目(7.1) 模块管理,验证权限,展示模块列表
- ASP.NET MVC 解析模板生成静态页一(RazorEngine)
- ASP.NET MVC5 视图预编译
- Asp.net MVC使用KindEditor 4.X无法取到textarea的值
- Aspnet MVC 异步调用
- ASP.NET MVC中使用Dropzone.js实现图片的批量拖拽上传
- 树莓派学习系列4——用Scratch创建游戏剧情
- 在ASP.NET MVC 中获取当前URL、controller、action
- Android 基于AOP监控之——AspectJ使用指南
- ASP.NET for WebApi
- ASP.NET for WebApi
- ASP.net MVC基于EntityFrameWork 的 MODEL层控制反转(IOC)架构设计
- asp.net 服务器端缓存与客户端缓存 [转]
- 在ASP.NET MVC 中获取当前URL、controller、action(转)
- 从Microsoft.AspNet.Identity看微软推荐的一种MVC的分层架构
- ASP.NET Identity V2
- asp.net mvc 与js的联合加密解密