asp.net 简单记录请求的客户端和服务端 处理时间

最近项目需要简单记录一下 ajax客户端和服务端处理时间,服务端时间的思路是借用BeginRequest和EndRequest事件,为了不影响现有接口返回的数据格式,因此服务处理时间放在response 的header里面。

  BeginRequest += (sender, args) => {
               HttpContext.Current.Items["ServerStartTime"] = DateTime.Now.Ticks.ToString();
            };
            EndRequest += (sender, args) => {
                long ticks = ConvertUtil.ToLong(HttpContext.Current.Items["ServerStartTime"], 0);
                TimeSpan ts = new TimeSpan(DateTime.Now.Ticks -ticks);
                HttpContext.Current.Response.Headers.Set("ServerProcessTime", Math.Ceiling(ts.TotalMilliseconds).ToString());
            };

客户端在借助beforeSend和complete事件,实现code如下:

 $(["get", "post"]).each(function (i, ajaxType) {
        G[ajaxType] = function (option) {
            $.ajax({
                url: option.url,
                data: option.data,
                type: ajaxType,
                beforeSend: function () {
                    option.StartClientTime = new Date();
                },
                dataType: "json",
                cache: option.cache,
                async: option.async,
                success: function (d) {
                   alert(d)
                },

                complete: function (XMLHttpRequest, textStatus) {
                    var endClientTime = new Date();
                    try {
                        var logRequest = false;
                        if (option.url.indexOf("/Member/AAA") >= 0 ||
                            option.url.indexOf("/Member/BBB")>=0 ||
                            option.url.indexOf("/Member/CCC")>=0) {
                            logRequest = true;
                        }
                        if (logRequest) {
                            //记录请求时间
                            var costTime = endClientTime - (option.StartClientTime - 0);
                            var serverTime = XMLHttpRequest.getResponseHeader("ServerProcessTime");
                            console.log("Rquest " + option.url + " totlal cost time:" + costTime + " Server time:" + serverTime);
                            var logdata = {
                                ajaxUrl: option.url,
                                TotalTicks: costTime,
                                ServerTicks: serverTime
                            };

                            $.post("/xxx/LogRequest", logdata);
                        }
                    } catch (e) {

                    }
                }
            });
        };
    });

最后在调用LogRequest把时间记录到日志系统中。

时间: 2024-11-08 18:50:44

asp.net 简单记录请求的客户端和服务端 处理时间的相关文章

[Java]命令行模拟TCP客户端与服务端的简单小程序遇到的问题(基础不牢!扎实和亲手实践比什么都重要!)

简单得不能再简单的需求: 简单模拟TCP客户端与服务端的一次连接和通信,客户端发出一个消息,服务端回馈一个消息 自己第一次编写的代码: Client: class TcpClient1 { public static void main(String[] args) throws Exception { Socket s=new Socket("127.0.0.1",10010); OutputStream out=s.getOutputStream(); out.write(&quo

python socket编程之客户端和服务端简单交互

服务端 #_*_ coding:utf-8 _*_ #导入socket模块 import socket # 创建socket对象 sk = socket.socket() #绑定侦听的IP和端口号 ip_port = ('192.168.9.213',9999) sk.bind(ip_port) #最大连接数 sk.listen(5) #接受请求,接受请求的时候可以获取到客户端的socket对象,以及客户端的IP和端口 #通过while循环,让服务端一直接受客户端请求 print "正在等待客户

Hessian客户端向服务端发送请求头

Hessian客户端向服务端发送数据 场景:项目日志Token处理,即用户发送一个请求时生成一个日志Token,该Token从各个服务之间传递,并使用该Token记录日志,直至请求结束.可以根据该Token定位所有日志. 问题:由于目前项目使用Hessian协议,所有Token必须使用Hessian传递.查阅相关资料,发现可以请求头传递数据. 解决方法:定义与线程相关的请求头上下文,在客户端发送请求之前,增加请求头.服务端获取请求时,从请求中解决请求头,并放入请求头上下文中,供服务端使用. 实现

python---》客户端与服务端的基础(做一个简单的客户端与服务端)

今天我们分享的内容是python简单的客户端与服务端,此处仅介绍一些简单的函数,并作出来一个玩儿玩儿. 在开始之前呢,先用一张图表示他们之间的关系 我们来按照这个步伐依次介绍: 服务端: import socketserver=socket.socket()#此处是为了创建出来一个服务端,第一步server.bind(('localhost',9999))#将套接字绑定到地址,loclhost是当地地址的的意思,如果要想查看当地地址的话,打开控制台(运行-->cmd) 按ipconfig即可查到

linux网络编程之用socket实现简单客户端和服务端的通信(基于UDP)

单客户端和服务端的通信(基于UDP)   代码 服务端代码socket3.c #include<sys/types.h> #include<sys/socket.h> #include<netinet/in.h> #include<arpa/inet.h> #include<unistd.h> #include<stdlib.h> #include<stdio.h> #include<string.h> #in

文件下载之断点续传(客户端与服务端的实现)

原文:http://www.cnblogs.com/zhaopei/p/download.html 阅读目录 文件下载-服务端 使用a标签提供文件下载 使用Response.TransmitFile提供文件下载 其他方式文件下载 文件下载-客户端 直接下载 异步下载 断点续传 断点续传(服务端的支持) 多线程同时下载(分片下载) 前面讲了文件的上传,今天来聊聊文件的下载. 老规矩,还是从最简单粗暴的开始.那么多简单算简单?多粗暴算粗暴?我告诉你可以不写一句代码,你信吗?直接把一个文件往IIS服务

【转】文件下载之断点续传(客户端与服务端的实现)

[转]文件下载之断点续传(客户端与服务端的实现) [转]文件下载之断点续传(客户端与服务端的实现) 前面讲了文件的上传,今天来聊聊文件的下载. 老规矩,还是从最简单粗暴的开始.那么多简单算简单?多粗暴算粗暴?我告诉你可以不写一句代码,你信吗?直接把一个文件往IIS服务器上一扔,就支持下载.还TM么可以断点续传(IIS服务端默认支持). 在贴代码之前先来了解下什么是断点续传(这里说的是下载断点续传)?怎么实现的断点续传?断点续传就是下载了一半断网或者暂停了,然后可以接着下载.不用从头开始下载. 很

WCF客户端获取服务端异常[自定义异常]

引言 经过不断的摸索,询问/调试,终于学会了关于WCF客户端与服务端之间异常的处理机制,在此来记录自己的成果,用于记录与分享给需要的伙伴们. 首先感谢[.NET技术群]里群主[轩]的大力帮助,如有需要大家也请欢迎加入[.NET技术群](群号:199281001),一起讨论交流.NET技术(ASP.NET MVC4.MVC5/C#/WPF/WCF),但愿大家在技术上有更多的成就,废话不多说,直接开始分享. 关于WCF服务端的原生抛出异常,我就不多说了,相信大家找到这篇博文的时候,已经尝试过诸多方法

socket的客户端和服务端(Windows控制台程序)

首先是两个程序,分别是socket的客户端和服务端.(在windows系统vc6.0编译)服务器端:#include <Winsock2.h>#include <stdio.h>#pragma comment(lib,"WS2_32.lib")void main(){    WSADATA wsd;    SOCKET server;                                            //服务器socket    SOCKAD