ASP.NET Core中間件設定教學(7)_實用技巧

微波
發布: 2017-06-28 14:07:48
原創
1531 人瀏覽過

這篇文章主要為大家詳細介紹了ASP.NET Core中間件的設定教程,具有一定的參考價值,有興趣的小夥伴們可以參考一下

Asp.Net Core-中間件

在這一章,我們將了解如何設定中間件。中間件技術在 ASP.NET Core中控制我們的應用程式如何回應 HTTP 請求。它還可以控制應用程式的異常錯誤,這是在如何進行身份驗證和授權使用者執行特定的操作的關鍵。

  • 中間件是組裝成應用的管道來處理請求和回應的軟體元件。

  • 每個元件可以選擇是否要在管道中將請求傳遞到下一個元件,並且可以在管道中執行某些操作之前和之後的任務。

  • Request委託用於建置請求管道。 Request委託用來處理每個HTTP請求。

  • 每個中間件在 ASP.NET Core都是一個對象,每一塊有非常具體、 專注和有限的作用。

  • 最終,我們需要很多的中間件為應用程式提供適當的行為。

現在讓我們假設我們想將每個對我們應用程式的請求都記錄日誌。

  • 在這種情況下,我們安裝到應用程式中的第一塊中間件是一個日誌元件。

  • 這個日誌程式可以看到一切傳入的請求,然後該中間件只是記錄一些訊息,然後傳遞這個請求下一個區塊中間件。

  • 中間件是以一系列的元件出現在這個處理管道中。

  • 我們安裝到應用程式的下一個中間件是一個授權元件。

  • 一個元件可能是尋找特定cookie或存取HTTP標頭中的令牌。

  • 如果授權元件發現一個令牌,它允許請求繼續。

  • 如果不是,授權元件本身可能會回應請求的HTTP錯誤代碼或將使用者重新導向到登入頁面。

  • 否則,授權元件將請求傳遞給下一個路由器的中間件。

  • 一個路由器查看URL,並決定下一步的行動。

  • 路由器是在做一些回應,如果路由器沒有找到任何回應,路由器本身可能會回傳404 Not Found錯誤。

 案例

using Microsoft.AspNet.Builder; 
using Microsoft.AspNet.Hosting; 
using Microsoft.AspNet.Http; 
using Microsoft.Extensions.DependencyInjection; 
using Microsoft.Extensions.Configuration; 
namespace FirstAppDemo { 
  public class Startup { 
   public Startup() { 
     var builder = new ConfigurationBuilder() 
      .AddJsonFile("AppSettings.json"); 
     Configuration = builder.Build(); 
   } 
   public IConfiguration Configuration { get; set; } 
    
   // This method gets called by the runtime. 
   // Use this method to add services to the container. 
   // For more information on how to configure your application, 
   // visit http://go.microsoft.com/fwlink/?LinkID=398940 
   public void ConfigureServices(IServiceCollection services) { 
   } 
    
   // This method gets called by the runtime. 
   // Use this method to configure the HTTP request pipeline. 
   public void Configure(IApplicationBuilder app) { 
     app.UseIISPlatformHandler(); 
     
     app.Run(async (context) => { 
      var msg = Configuration["message"]; 
      await context.Response.WriteAsync(msg); 
     }); 
   } 
   // Entry point for the application. 
   public static void Main(string[] args) => WebApplication.Run<Startup>(args); 
  } 
}
登入後複製

Configure()方法內,我們將呼叫IApplicationBuilder介面的擴充方法來新增中間件。

 預設在一個新的空項目有兩塊中間件-

IISPlatformHandler

Middleware registered with app.Run

IISPlatformHandler

IISPlatformHandler允許我們使用Windows驗證。它將著眼於每個傳入請求,看看是否有任何Windows身份資訊相關的請求,然後調用下一個區塊中間件。

Middleware registered with app.Run

在這種情況下一個中間件在app.Run中註冊的中間件。 Run方法允許我們傳入另一種方法,我們可以使用它來處理每一個回應。 Run方法不是你經常會看到的,我們可以稱它為一個中間件的終端。

你註冊運行的中間件將永遠不會有機會呼叫另一個中間件,它唯一能做的就是接收請求,便要產生某種反應。

你也造訪到一個回應物件,你可以在回應物件中加入一些字串

如果你想在app.Run之後註冊另一個中間件,這段中間件將永遠不會被呼叫,因為Run方法是一個中間件的終端。它不會呼叫下一個區塊中間件。

如何加入一個中間件

讓我們著手進行以下步驟來新增另一個中間件−

步驟1−右鍵單擊項目並選擇Manage NuGet Packages。

步驟2−搜尋 Microsoft.aspnet.diagnostics,此特定的軟體包包含許多不同種的中間件,我們可以使用。

步驟3−如果套件沒有安裝在您的專案中,那麼就選擇安裝這個套件。

步驟4−現在讓我們在Configure()方法呼叫app.UseWelcomePage中間件。

// This method gets called by the runtime. 
// Use this method to configure the HTTP request pipeline. 
public void Configure(IApplicationBuilder app) { 
  app.UseIISPlatformHandler(); 
  app.UseWelcomePage(); 
  
  app.Run(async (context) => { 
   var msg = Configuration["message"]; 
   await context.Response.WriteAsync(msg); 
  });
登入後複製

步驟 5 − 運行您的應用程序,您將看到以下的歡迎畫面。

這個歡迎畫面可能沒那麼有用。

步骤6−让我们试试别的东西,可能是更有用的,而不是使用欢迎页面,我们将使用RuntimeInfoPage。

// This method gets called by the runtime. 
// Use this method to configure the HTTP request pipeline. 
public void Configure(IApplicationBuilder app) { 
  app.UseIISPlatformHandler(); 
  app.UseRuntimeInfoPage(); 
  
  app.Run(async (context) => { 
   var msg = Configuration["message"]; 
   await context.Response.WriteAsync(msg); 
  }); 
}
登入後複製

第 7 步 − 保存您的 Startup.cs 页面并刷新您的浏览器,你会看到下面的页面。

这个 RuntimeInfoPage 是中间件,将只响应一个特定的 URL 的请求。如果传入的请求与该 URL 不匹配,这个中间件只是让请求传递到下一件中间件。该请求将通过 IISPlatformHandler 中间件,然后转到 UseRuntimeInfoPage 中间件。它不会创建响应,所以它会转到我们的应用程序。运行并显示该字符串。

步骤8−我们在URL结尾添加“ runtimeinfo”。现在,您将看到一个页面,该页面是由中间件运行时信息页面。

你将看到一个返回页面,它给你展示了一些关于你的运行时环境,如操作系统、运行时版本,结构,类型和您正在使用的所有包的信息。

以上是ASP.NET Core中間件設定教學(7)_實用技巧的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板