.NetCore 下开发独立的(RPL)含有界面的组件包 (一)准备工作

.NetCore 下开发独立的(RPL)含有界面的组件包 (二)扩展中间件及服 务

.NetCore 下开发独立的(RPL)含有界面的组件包 (三)构建界面

.NetCore 下开发独立的(RPL)含有界面的组件包 (四)授权过滤

.NetCore 下开发独立的(RPL)含有界面的组件包 (五)授权过滤参数处 理

.NetCore 下开发独立的(RPL)含有界面的组件包 (六)实现业务功能

在.netcore中大家经常会看到 app.usexxxx()  ,services.addxxxx()等形式的方法

接下来我们就来扩展下这个组件,新建了一个扩展类Idr4AdminChinaExtensions

public static class Idr4AdminChinaExtensions
{ public static void UseAdminChina(this IApplicationBuilder app, Action<DashboardOptions> options = null)
{
/*

*/ }
public static IServiceCollection AddAdminChina(this IIdentityServerBuilder services)
{ return services.Services;
}
}

这里我写了这样的两个扩展方法,一个用于扩展IApplicationBuilder实现中间件处理,一个扩展了IIdentityServerBuilder实现IdentityServer4的一些服务

那么这个中间件要干什么呢?如实现某一个地址的时候显示一个页面,DashboardOptions是为了接受中间的参数信息,如hangfire的写法,你访问 localhost:10000/hangfire就会出现它的dashboard

 app.UseHangfireDashboard("/hangfire", new DashboardOptions
{
Authorization = new[] { new DashboardAuthorizeFilter() }
});

好,接下来我们去添加中间件,我建立了中间价类

关于中间这块之前有说过,主要就是对 RequestDelegate 的理解

public class AdminChinaMiddeware
{
public RequestDelegate _next;
private DashboardOptions _options;
public AdminChinaMiddeware(RequestDelegate next, DashboardOptions options)
{
_next = next;
_options = options;
}
public async Task Invoke(HttpContext context)
{ await _next(context);
}
}

建立好中间件后,我们在扩展方法中添加

public static void UseAdminChina(this IApplicationBuilder app, Action<DashboardOptions> options = null)
{ var dashboardOptions = new DashboardOptions();
options?.Invoke(dashboardOptions);
app.UseMiddleware<AdminChinaMiddeware>(dashboardOptions); }

下面来看下DashbardOptions的处理,我没有直接指定地址,而是将地址放在了这个类中来处理,这里添加授权过滤接口,以便实现授权过滤处理

  public class DashboardOptions
{
public DashboardOptions()
{
AppPath = "/";
PathRoute = "/adminchina"; }
/// <summary>
/// 返回应用路径地址
/// </summary>
public string AppPath { get; set; }
/// <summary>
/// route 地址
/// </summary>
public string PathRoute { get; set; } }

如果,你需要使用直接的地址可以使用Map来处理,如下接受一个pathstring的参数

app.Map(new PathString("/adminchina"), appbuilder =>
{
app.UseMiddleware<AdminChinaMiddeware>(dashboardOptions);
});

下面我们在中间中改一个输出看一看效果,在中间件类中添加如下输出我的名称,当路由到我指定的地址的时候 输出下我的名称

  string routeUrl = context.Request.Path;
if (routeUrl.Equals(_options.PathRoute))
{
await context.Response.WriteAsync("liyouming");
} else
{
await _next(context);
}

接下里在这里添加引用,并在Startup里面写上我们的中中间件运行

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Error");
}
app.UseAdminChina();
app.UseStaticFiles();
app.UseCookiePolicy(); app.UseMvc();
}

可以看到第一个页面是自带的页面

然后我们注入指定的地址 ,我们的中间就基本处理好了

当然这里紧紧是基本,这样基本了解了中间件的业务路数了

.NetCore 下开发独立的(RPL)含有界面的组件包 (二)扩展中间件及服务的更多相关文章

  1. .NetCore 下开发独立的(RPL)含有界面的组件包 (六)实现业务功能

    .NetCore 下开发独立的(RPL)含有界面的组件包 (一)准备工作 .NetCore 下开发独立的(RPL)含有界面的组件包 (二)扩展中间件及服 务 .NetCore 下开发独立的(RPL)含 ...

  2. .NetCore 下开发独立的(RPL)含有界面的组件包 (五)授权过滤参数处理

    .NetCore 下开发独立的(RPL)含有界面的组件包 (一)准备工作 .NetCore 下开发独立的(RPL)含有界面的组件包 (二)扩展中间件及服 务 .NetCore 下开发独立的(RPL)含 ...

  3. .NetCore 下开发独立的(RPL)含有界面的组件包 (四)授权过滤

    .NetCore 下开发独立的(RPL)含有界面的组件包 (一)准备工作 .NetCore 下开发独立的(RPL)含有界面的组件包 (二)扩展中间件及服 务 .NetCore 下开发独立的(RPL)含 ...

  4. .NetCore 下开发独立的(RPL)含有界面的组件包 (三)构建界面

    .NetCore 下开发独立的(RPL)含有界面的组件包 (一)准备工作 .NetCore 下开发独立的(RPL)含有界面的组件包 (二)扩展中间件及服 务 .NetCore 下开发独立的(RPL)含 ...

  5. .NetCore 下开发独立的(RPL)含有界面的组件包 (一)准备工作

    .NetCore 下开发独立的(RPL)含有界面的组件包 (一)准备工作 .NetCore 下开发独立的(RPL)含有界面的组件包 (二)扩展中间件及服 务 .NetCore 下开发独立的(RPL)含 ...

  6. Razor Page Library:开发独立通用RPL(内嵌wwwroot资源文件夹)

    ASP.NET Core知多少系列:总体介绍及目录 Demo路径:GitHub-RPL.Demo 1. Introduction Razor Page Library 是ASP.NET Core 2. ...

  7. 在winform下实现左右布局多窗口界面的方法(二)

    这篇文章主要介绍了在winform下实现左右布局多窗口界面的方法之续篇 的相关资料,需要的朋友可以参考下 在上篇文章在winform下实现左右布局多窗口界面的方法(一)已经实现了左右布局多窗口界面,今 ...

  8. 关于在Java EE 下开发web,出现项目中的外部包没有tomcat的包的原因

    在新建的项目的时候,要设置目标服务器运行环境,把那个设置成tomcat,这样,项目中就会有tomca的api

  9. 在winform下实现左右布局多窗口界面的方法(一)

    在web页面上我们可以通过frameset,iframe嵌套框架很容易实现各种导航+内容的布局界面,而在winform.WPF中实现其实也很容易,通过本文给大家介绍在winform下实现左右布局多窗口 ...

随机推荐

  1. Python全栈(第一部分)day2

    昨日内容回顾 编译型:一次性将全部代码编译成二进制文件 代表语言: C,C++ 优点:执行效率高 缺点:开发速度慢,不能跨平台 解释型:当程序运行时,从上至下一行一行的解释成二进制 优点:开发速度快, ...

  2. 图像超分辨-DBPN

    本文译自2018CVPR DeepBack-Projection Networks For Super-Resolution 代码: github 特点:不同于feedback net,引入back ...

  3. eMMC基础技术4:eMMC command

    1.前言 本文主要对eMMC的command进行详细介绍,主要包含如下内容: (1)command类型 (2)command格式 2.command类型 command类型 说明 bc 不带respo ...

  4. Windows PowerShell 入門(7)-関数編2

    この連載では.Microsoftが提供している新しいシェル.Windows Power Shellの使い方を解説します.前回に引き続きPowerShellにおける関数の取り扱いとして.変数と関数のスコ ...

  5. python3+selenium入门15-执行JavaScript

    有时有些功能需要通过js来执行,比如拖动浏览器的滚动条.通过execute_script()方法可以执行js的代码 window.scrollTo()可以传两个参数,第一个参数是下方滚动条的位置,第二 ...

  6. 使用Let's Encrypt为网站加入SSL证书

    一直没有为网站配置过HTTPS,因为怕麻烦.不过这次工作要求,没有办法,只能硬着头皮上了. 老板提供了一个关键字,Let's Encrypt.其实最早看到这句话,我以为是一个动词,让我行动的意思.但是 ...

  7. 2018 Multi-University Training Contest - Team 1 题解

    Solved A HDU 6298 Maximum Multiple Solved B HDU 6299 Balanced Sequence Solved C HDU 6300 Triangle Pa ...

  8. Ajax使用formdata异步上传文件,报错the request was rejected because no multipart boundary was found

    基于jQuery的Ajaxs使用FormData上传文件要注意两个参数的设定 processData设为false 把processData设为false,让jquery不要对formData做处理, ...

  9. Mysql 通过frm&ibd 恢复数据

    mysql存储在磁盘中,各种天灾人祸都会导致数据丢失.大公司的时候我们常常需要做好数据冷热备,对于小公司来说要做好所有数据备份需要支出大量的成本,很多公司也是不现实的.万一还没有做好备份,数据被误删除 ...

  10. centos7 部署rabbitmq

    1.安装 Erlang 就想我们编写Java引用程序需要安装 JDK一样,安装 RabbitMQ ,我们也需要安装 Erlang . ①.下载 erlang 安装包 将安装包下载到 /home/erl ...