zoukankan      html  css  js  c++  java
  • .Net Core 拦截器简单理解

    1.拦截器的使用场景

      场景1: 报错异常机制的处理. 创建一个类继承ExceptionFilterAttribute

      场景2: 写WebAPI

      场景3: 类前面可以使用,方法前面也可以使用.

    using Microsoft.AspNetCore.Mvc;
    using Microsoft.AspNetCore.Mvc.Filters;
    using Microsoft.AspNetCore.Mvc.ModelBinding;
    using Microsoft.Extensions.Logging;
    using System;
    using System.Collections.Generic;
    using System.Linq;

    namespace Asp.NetCore.CommTool
    {
    /// <summary>
    /// 异常报错自定义拦截器
    /// </summary>
    public class CustomExceptionFilter:ExceptionFilterAttribute
    {
    private readonly ILogger<CustomExceptionFilter> _logger;

    private readonly IModelMetadataProvider _modelMetadataProvider;
    public CustomExceptionFilter(ILogger<CustomExceptionFilter> logger, IModelMetadataProvider modelMetadataProvider)
    {
    _logger = logger;
    _modelMetadataProvider = modelMetadataProvider;
    }
    //1.继承这个特性ExceptionFilterAttribute
    //2.重写这个方法.
    public override void OnException(ExceptionContext context)
    {
    //有用信息
    //报错信息:context.Exception.Message;
    //报错方法:context.ActionDescriptor.DisplayName;
    //获取或设置一个值,该值指示是否已处理异常。
    //写入日志!!!!!!!!!!!!!!Log4
    if (!context.ExceptionHandled)
    {
    //中断式.直接返给界面.
    context.Result = new JsonResult(new {retuslt=false,msg= context.Exception.Message});
    }
    context.ExceptionHandled = true; //告诉系统,这个异常已经处理了,不用再处理
    base.OnException(context);
    }
    }
    }

    ----------------------------------------使用方式--------------------------------------

    //异常拦截器 方式1:直接暴露给界面
    //[CustomExceptionFilter]
    //异常拦截器 方式2:可以保存到日志  
    [TypeFilter(typeof(CustomExceptionFilter))]
    public IActionResult Index()
    {
      //可以直接读第一层的文本值
      //string logging = this._configuration["AllowedHosts"];
      //读更深层次的值
      //string logging0 = this._configuration["Logging:LogLevel:Default"];
      //乱码问题.点击进去appsettings.json更改保存格式的编码为utf-8,重新保存.
      string logging0 = this._configuration["B:C:0"];
      string logging1 = this._configuration["B:C:9"].ToString();
      return View();
    }

  • 相关阅读:
    事件的截获
    页面嵌入dom与被嵌入iframe的攻防
    如何在windows下安装JDK
    Java and C# Comparison
    利用hadoop来解决“单表关联”的问题
    Oracle10GODP连接11G数据库,出现ORA
    sql 2005出现错误:数据库 'Twitter' 的事务日志已满。若要查明无法重用日志中的空间的原因,请参阅 sys.databases 中的 log_reuse_wait_desc 列。
    MapReduce 模式、算法和用例
    利用hadoop来解决“共同好友”的问题
    部署hadoop的开发环境
  • 原文地址:https://www.cnblogs.com/TanYong/p/14329558.html
Copyright © 2011-2022 走看看