欢迎来到山村网

ASP.NET Core中间件如何设置

2019-03-09 12:53:53浏览:937 来源:山村网   
核心摘要:Asp.Net Core-中间件在这一章,我们将了解如何设置中间件。中间件技术在 ASP.NET Core中控制我们的应用程序如何响应 HTTP 请求。

Asp.Net Core-中间件

在这一章,我们将了解如何设置中间件。中间件技术在 ASP.NET Core中控制我们的应用程序如何响应 HTTP 请求。它还可以控制应用程序的异常错误,这是一个在如何进行身份验证和授权用户执行特定的操作的关键。

中间件是组装成应用的管道来处理请求和响应的软件组件。 每个组件可以选择是否要在管道中将请求传递到下一个组件,并可以在管道中执行某些操作之前和之后的任务。 Request委托用于构建请求管道。Request委托用来处理每个HTTP请求。 每件中间件在 ASP.NET Core都是一个对象,并且每一块有非常具体、 专注和有限的作用。 最终,我们需要很多的中间件为应用程序提供适当的行为。

现在让我们假设我们想将每个对我们应用程序的请求都记录日志。

在这种情况下,我们安装到应用程序中的第一块中间件是一个日志组件。 这个日志程序可以看到一切传入的请求,然后该中间件只是记录一些信息,然后传递这个请求下一个块中间件。

ASP.NET Core中间件如何设置 山村

中间件是以一系列的组件出现在这个处理管道中。 我们安装到应用程序的下一个中间件是一个授权组件。 一个组件可能是寻找特定cookie或访问HTTP标头中的令牌。 如果授权组件发现一个令牌,它允许请求继续。 如果不是,授权组件本身可能会响应请求的HTTP错误代码或将用户重定向到登录页面。 否则,授权组件将请求传递给下一个路由器的中间件。 一个路由器查看URL,并确定下一步的行动。 路由器是在做一些回应,如果路由器没有找到任何回应,路由器本身可能会返回404 Not Found错误。

案例

现在让我们通过一个简单的例子来理解更多关于中间件的知识。我们通过使用我们的启动类的Configure方法来配置中间件组件。

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”。现在,您将看到一个页面,该页面是由中间件运行时信息页面。

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

(责任编辑:豆豆)
下一篇:

linux系统中修改IP和DNS的命令

上一篇:

Linux系统与性能监控

  • 信息二维码

    手机看新闻

  • 分享到
打赏
免责声明
• 
本文仅代表作者个人观点,本站未对其内容进行核实,请读者仅做参考,如若文中涉及有违公德、触犯法律的内容,一经发现,立即删除,作者需自行承担相应责任。涉及到版权或其他问题,请及时联系我们 xfptx@outlook.com