2.找到invoke方法并记下_next调用。一些处理程序可以引发异常,因此让我们捕获它们。如果捕获到错误,则_next用try-catch块包装调用并运行我们的处理程序。
GanttErrorMiddleware.cs public async Task Invoke(HttpContext httpContext) { try { await _next(httpContext); }catch(Exception e) { await HandleExceptionAsync(httpContext, e); } } private static Task HandleExceptionAsync(HttpContext context, Exception exception) { var result = JsonConvert.SerializeObject(new { action = "error" }); context.Response.ContentType = "application/json"; context.Response.StatusCode = StatusCodes.Status500InternalServerError; return context.Response.WriteAsync(result); }
3.中间件已准备就绪。现在转到Startup.cs并使用Configure()方法连接中间件:
启动文件 public void Configure(IApplicationBuilder app, IHostingEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.UseGanttErrorMiddleware(); app.UseDefaultFiles(); app.UseStaticFiles(); app.UseMvc();