国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP.NET教程 - 淺談ASP.NET Core 2.0 中間件(譯)

淺談ASP.NET Core 2.0 中間件(譯)

2020-05-17 15:06三生石上(FineUI控件) ASP.NET教程

這篇文章主要介紹了淺談ASP.NET Core 2.0 中間件,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

問題

如何創(chuàng)建一個最簡單的ASP.NET Core中間件

答案

使用VS創(chuàng)建一個ASP.NET Core 2.0的空項目,注意Startup.cs中的Configure()方法:

?
1
2
3
4
5
6
7
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
  app.Run(async (context) =>
  {
    await context.Response.WriteAsync("Hello World! (Run)");
  });
}

比較好的創(chuàng)建請求管道的方法是使用IApplicationBuilder上的擴展方法:

?
1
2
3
4
5
6
7
public static void RunHelloWorld(this IApplicationBuilder app)
{
  app.Run(async (context) =>
  {
    await context.Response.WriteAsync("Hello World! (Run)");
  });
}
?
1
2
3
4
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
  app.RunHelloWorld();
}

運行,此時頁面顯示:

淺談ASP.NET Core 2.0 中間件(譯)

上面我們使用IApplicationBuilder.Run()來配置中間件,另外一種方法是IApplicationBuilder.Use():

?
1
2
3
4
5
6
7
8
public static void UseHelloWorld(this IApplicationBuilder app)
{
  app.Use(async (context, next) =>
  {
    await context.Response.WriteAsync("Hello World! (Use)\n");
    await next();
  });
}
?
1
2
3
4
5
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
  app.UseHelloWorld();
  app.RunHelloWorld();
}

運行,此時頁面顯示:

淺談ASP.NET Core 2.0 中間件(譯)

將中間件作為單獨的類定義是更好的實踐方法:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public class HelloWorldMiddleware
{
  private readonly RequestDelegate _next;
 
  public HelloWorldMiddleware(RequestDelegate next)
  {
    _next = next;
  }
 
  public async Task Invoke(HttpContext context)
  {
    await context.Response.WriteAsync("Hello World! (Use in Class)\n");
    await _next(context);
  }
}
 
 
public static class UseHelloWorldInClassExtensions
{
  public static IApplicationBuilder UseHelloWorldInClass(this IApplicationBuilder app)
  {
    return app.UseMiddleware<HelloWorldMiddleware>();
  }
}
?
1
2
3
4
5
6
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
  app.UseHelloWorld();
  app.UseHelloWorldInClass();
  app.RunHelloWorld();
}

運行,此時頁面顯示:

淺談ASP.NET Core 2.0 中間件(譯)

討論

中間件是一個攔截HTTP請求和響應消息的組件。我們通過創(chuàng)建這些組件鏈,來為我們的應用程序創(chuàng)建一個請求管道。

我們通過Configure()方法的IApplicationBuilder參數來創(chuàng)建這個請求管道,IApplicationBuilder參數有如下方法:

  1. Run():添加中間件并終止請求管道(也就是說不再調用下一個中間件)。
  2. Use():添加中間件,使用lambda表達式或者一個具體的類。
  3. Map():根據請求路徑添加中間件。

Run

這個方法接受RequestDelegate委托作為參數,當委托方法被調用時接受HttpContext參數。這個委托方法返回void,因為它會終止請求管道。

Use

這個方法接受Func委托作為參數,此委托方法有兩個參數,分別是HttpContext和指向下一個中間件的next,返回空(Task)。如果沒有調用下一個中間件,就會終止請求管道(和Run效果一樣)。

UserMiddleware

當通過單獨類創(chuàng)建中間件時,我們使用UseMiddleware方法,并將具體的實現類型作為泛型參數。

在中間件類中,有兩個部分很重要:

1. 構造函數接受RequestDelegate。當調用此委托時會將當前請求傳入下一個中間件。

2. 它擁有一個Invoke方法,接收HttpContext參數并返回空(Task)。當需要用到中間件時,框架會主動調用這個方法。

注:在單獨類中實現中間件,并用UseMiddleware封裝起來是最佳實踐。

擴展方法

需要注意擴展方法的不同之處,RunXXX不會返回值,而UseXXX會返回值(IApplicationBuilder)。這是因為Run()終止請求管道,而Use()可能會鏈接到其他的中間件。

順序

中間件按照它們在Configure()方法出現的順序依次被調用。而返回到客戶端的響應也會經歷相同的中間件管道。

源代碼下載

原文:https://tahirnaushad.com/2017/08/14/asp-net-core-middleware/

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产精品久久久久久久久久久免费看 | 精品久久久久久久久久久久久久久久久久久 | 7878www免费看片 | 日韩一区二区在线观看 | 日韩婷婷 | 草久久av | 一区二区三区在线 | 精品国产一区二区三区小蝌蚪 | 国产成人免费高清激情视频 | 黄色网址免费观看 | www.色小妹| 亚洲精品在线看 | 亚洲人视频在线观看 | 特级毛片在线 | 亚洲欧美另类在线 | 99精品欧美一区二区三区综合在线 | 欧美一区二区三区在线观看视频 | 精品视频一区二区三区四区 | 亚洲午夜成激人情在线影院 | 精品av| 欧美电影网站 | 亚洲网站在线观看 | 成人国产精品视频 | 免费一级毛片网站 | 日韩精品 | 亚洲男人天堂网 | 特黄特黄一级片 | 欧美激情在线精品一区二区三区 | 国产精品网站在线观看 | 亚洲视频 中文字幕 | 亚洲日本va中文字幕 | 久色视频在线 | 综合婷婷 | 精品少妇一区二区三区在线播放 | jyzz中国jizz十八岁免费 | 一级片 | 中文字幕在线一区二区三区 | 欧美一区在线视频 | 羞羞网站在线观看 | 亚洲第一成年人网站 | 日韩av视屏 |