应用1:webconfig.cs中设置

    public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{ // Web API routes
config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
); //error log
GlobalConfiguration.Configuration.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always;
config.Services.Add(typeof(IExceptionLogger), new ApiExceptionLogger());
}
}

应用二:Global.asax.cs

       protected void Application_Error(object sender, EventArgs e)
{
Response.Filter = null;
var lastError = Server.GetLastError();
if (lastError != null)
{
_logger.Error(lastError, "CRM site exception");
}
}

ApiExceptionLogger.cs:

    public class ApiExceptionLogger: ExceptionLogger
{
public ApiExceptionLogger(){} public override void Log(ExceptionLoggerContext context)
{
StringBuilder sb = new StringBuilder();
var r = context.Request;
if (r != null)
{
sb.AppendLine($"Unhandled exception processing {r.Method} for {r.RequestUri}");
if (r.Headers.Count() > 0)
{
sb.AppendLine("Headers Begin:");
sb.AppendLine($"{r.Headers.ToString()}");
sb.AppendLine("Headers End.");
}
if (r.Content!=null)
{
var content = r.Content.ReadAsStringAsync().Result;
sb.AppendLine("Contents Begin:");
sb.AppendLine(content);
sb.AppendLine("Contents End.");
}
}
IIocHelper ioc = IocFactory.Instance;
var logger = ioc.GetInstance<ILogBase>();
logger.Error(sb.ToString(), context.Exception);
} }

  

logger:可以使用NLog实现

ExceptionLogger的更多相关文章

  1. PHP 面向对象编程和设计模式 (4/5) - 异常的定义、扩展及捕获

    PHP高级程序设计 学习笔记 2014.06.12 异常经常被用来处理一些在程序正常执行中遇到的各种类型的错误.比如做数据库链接时,你就要处理数据库连接失败的情况.使用异常可以提高我们程序的容错特性, ...

  2. 基于黑名单的xss过滤器

    /** * 类名称:AntiXssFilter * @version * 类描述:基于黑名单的xss过滤器 * @version * 创建人:xxx * @version * 创建时间:2015年11 ...

  3. 7.2WebApi2中的全局异常处理

    现在在WebApi中还没有一种简单的方式去记录或者处理全局的异常.一些未处理的异常可以处理通过异常过滤器,但有大量的异常是异常过滤器不能处理的.例如: 从控制器的构造函数引发的异常. 从消息处理程序引 ...

  4. GridView 控件中如何绑定 CheckBoxList

    需求:设计这样一个页面,在页面上可以选择和展示各省份对应的文明城市? 思路:一次性查询出所需的记录(查询数据库的操作不宜写到 C# 代码的循环语句中),并保存到全局变量中,之后根据条件过滤出需要的.可 ...

  5. log4

    <?xml version="1.0"?> <configuration> <configSections> <section name= ...

  6. 从Owin到System.Web.Http.Owin的HttpMessageHandlerAdapter看适配器模式

    .mytitle { background: #2B6695; color: white; font-family: "微软雅黑", "宋体", "黑 ...

  7. 在asp.net web api 2 使用 Serilog 记录日志

    Serilog是.net里面非常不错的记录日志的库,另外一个我认为比较好的Log库是NLog. 在我个人的asp.net web api 2 基础框架(Github地址)里,我原来使用的是NLog,但 ...

  8. ASP.NET Web API 2中的错误处理

    前几天在webapi项目中遇到一个问题:Controller构造函数中抛出异常时全局过滤器捕获不到,于是网搜一把写下这篇博客作为总结. HttpResponseException 通常在WebAPI的 ...

  9. Asp.Net WebAPI中Filter过滤器的使用以及执行顺序

    转发自:http://www.cnblogs.com/UliiAn/p/5402146.html 在WEB Api中,引入了面向切面编程(AOP)的思想,在某些特定的位置可以插入特定的Filter进行 ...

随机推荐

  1. A stock

    1. 密集成交不太妙 主力抛压退为好

  2. Andriod post Api与返回值

    vs后台api控制器  post接收参数----HttpContext.Current.Request.Params["account"].ToString() 返回值为对象返回, ...

  3. The Little Prince-12/08

    The Little Prince-12/08 今天来点中文的经典语录+内心独白好不好呢? 狐狸说:“对我来说,你只是一个小男孩,就像其他成千上万个小男孩一样没有什么两样.我不需要你.你也不需要我.对 ...

  4. 怎样从外网访问内网php-fpm?

    本地安装了一个php-fpm,只能在局域网内访问,怎样从外网也能访问到本地的php-fpm呢?本文将介绍具体的实现步骤. 准备工作 安装并启动php-fpm 默认安装的php-fpm端口是9000. ...

  5. Golang实现二分查找法

    二分查找法就是实现在一组有序的数字数组集合中最快找到指定元素的下标 思路 ①先找到中间的下标middle = (leftIndex + RightIndex) /2 ,然后让中间的下标值和FindVa ...

  6. P1382 楼房

    P1382 楼房 每个矩形拆成2个坐标按$x$轴排序,蓝后$multiset$维护最高值. #include<iostream> #include<cstring> #incl ...

  7. 为什么不应该使用ZooKeeper做服务发现

    [编者的话]本文作者通过ZooKeeper与Eureka作为Service发现服务(注:WebServices体系中的UDDI就是个发现服务)的优劣对比,分享了Knewton在云计算平台部署服务的经验 ...

  8. 10: VMware中扩展根分区

    1.1 添加一块硬盘 1.先给VMware添加一块60G硬盘 2.必须重启虚拟机才能识别到新加磁盘 fdisk -l        # 查看刚刚添加的硬盘 3.查看当前磁盘使用情况 df -hl   ...

  9. A writer of dictionaries,a harmless druge.

    Nine Years for A and B By Christopher Ricks Dr. Johnson was the greatest man who made a dictionary.  ...

  10. python --- 18 类与类之间的关系, 特殊成员

    类与类之间的关系 一.依赖关系 执行某个动作的时候. 需要xxx来帮助你完成这个操作      随时可以更换另外一个东西来完成此操作 此时的关系是最轻的. 二.关联关系(组合关系,聚合关系) 1.一对 ...