[ASP.NET] 基于.Net Remoting 的网站访问监控模块

news/2024/5/19 9:22:49/文章来源:https://blog.csdn.net/weixin_30439031/article/details/97600849
监控公司局域网的网站访问情况。
项目1:
新建类MonitorHttpModule.cs
ContractedBlock.gifExpandedBlockStart.gifCode
namespace HouseProgram.HttpModule
ExpandedBlockStart.gifContractedBlock.gif
{
    
public class MonitorHttpModule :IHttpModule
ExpandedSubBlockStart.gifContractedSubBlock.gif    
{
        
public void Init(HttpApplication application)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            
if (ChannelServices.RegisteredChannels.Length > 0)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
            }

            
else
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                ChannelServices.RegisterChannel(
new TcpClientChannel(), false);
            }
           

            application.BeginRequest 
+= new EventHandler(application_BeginRequest);
        }


        
void application_BeginRequest(object sender, EventArgs e)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            
try
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                HttpContext context 
= ((HttpApplication)sender).Context;
                MonitorClass obj 
= (MonitorClass)Activator.GetObject(typeof(MonitorClass), "tcp://sz389:8085/HouseProgramMonitor");
                
if (obj == null)
ExpandedSubBlockStart.gifContractedSubBlock.gif                
{
                }

                
else
ExpandedSubBlockStart.gifContractedSubBlock.gif                
{
                    StringBuilder sb 
= new StringBuilder();
                    sb.AppendLine(String.Format(
"Time:[ {0} ]  IP:[ {1} ]  Type:[ {2} ]", DateTime.Now.ToString(), context.Request.UserHostAddress, context.Request.RequestType));
                    
if (!String.IsNullOrEmpty(context.Request.ContentType))
ExpandedSubBlockStart.gifContractedSubBlock.gif                    
{
                        sb.AppendLine(context.Request.ContentType);
                    }

                    
if (!String.IsNullOrEmpty(context.Request.Form.ToString()))
ExpandedSubBlockStart.gifContractedSubBlock.gif                    
{
                        sb.AppendLine(context.Request.Form.ToString().Replace(
"&","\r\n"));
                    }

                    sb.AppendLine(context.Request.Url.ToString());
                    obj.RecordInfo(sb.ToString(), context.Request.RequestType);
                }

            }

            
catch
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
            }

        }


        
public void Dispose()
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
        }

    }

}
生成dll,在站点的Web.config 文件中加入以下节点:
ContractedBlock.gifExpandedBlockStart.gifCode
<system.web>
    
<httpModules>
        
<add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
        
<add name="MonitorHttpModule" type="HouseProgram.HttpModule.MonitorHttpModule"/>
    
</httpModules>
</system.web>

项目2:
新建类MonitorClass.cs
ContractedBlock.gifExpandedBlockStart.gifCode
public class MonitorClass : MarshalByRefObject
    {
        
public MonitorClass()
        {
            
//Console.WriteLine(String.Format("Client Constructor Called  DateTime: [ {0} ]", DateTime.Now.ToString()));
        }

        
~MonitorClass()
        {
            
//Console.WriteLine(String.Format("Client Destructor Called  DateTime: [ {0} ]", DateTime.Now.ToString()));
        }

        
public delegate void RecordInfoHandler(string msg, string requestType);
        
public static event RecordInfoHandler OnRecordInfoEvent;

        
public void RecordInfo(string msg, string requestType)
        {
            
if (OnRecordInfoEvent != null)
            {
                OnRecordInfoEvent(msg, requestType);
            }
        }
    }

项目3:
新建Console 项目
ContractedBlock.gifExpandedBlockStart.gifCode
namespace HouseProgram.RemotingServer
{
    
class Program
    {
        
static void Main(string[] args)
        {
            TcpServerChannel channel 
= new TcpServerChannel(8085);

            ChannelServices.RegisterChannel(channel, 
false);

            RemotingConfiguration.RegisterWellKnownServiceType(
typeof(MonitorClass), "HouseProgramMonitor", WellKnownObjectMode.SingleCall);
            Console.BufferHeight 
= 30000;
            MonitorClass.OnRecordInfoEvent 
+= new MonitorClass.RecordInfoHandler(MonitorClass_OnRecordInfoEvent);            
            Console.WriteLine(
"Press Enter to exit.");
            Console.ReadLine(); 
        }
        
static void MonitorClass_OnRecordInfoEvent(string msg, string requestType)
        {
            
switch (requestType)
            {
                
case "POST":
                    Console.ForegroundColor 
= ConsoleColor.Yellow;
                    Console.WriteLine(msg);
                    
break;
                
case "GET":
                    Console.ForegroundColor 
= ConsoleColor.DarkGreen;
                    Console.WriteLine(msg);
                    
break;
                
default:
                    Console.ForegroundColor 
= ConsoleColor.Cyan;
                    Console.WriteLine(msg);
                    
break;
            }
            
        }
    }
}

转载于:https://www.cnblogs.com/wyforumid/archive/2009/09/22/1571939.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_768651.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

win8 iis安装及网站发布

系统&#xff1a;win8 环境&#xff1a;vs2012 一&#xff1a;安装IIS 比较win7的安装来说&#xff0c;多选了几个钩钩&#xff0c;不然会报错&#xff0c;偶就遇到这样的错误。 控制面板-》程序和功能-》启动和关闭windows功能&#xff0c;钩钩图例&#xff1a; 装好之后在控制…

【机器学习实战02】使用k-近邻算法改进约会网站的配对效果

程序流程&#xff1a; 1.收集数据&#xff1a;提供文本文件 2.准备数据&#xff1a;使用Python解析文本文件 3.分析数据&#xff1a;使用Matplotlib画二维扩散图 4.测试算法&#xff1a;使用提供的部分数据作为测试样本。 测试样本和非测试样本的区别在于&#xff1a;测试…

搭建网站必不可少的知识4

网站备案网站备案比域名备案麻烦很多&#xff0c;时间也比较长&#xff0c;企业备案15天左右&#xff0c;个人20天左右&#xff0c;时间只是大约时间&#xff0c;具体通过日期还得看交管局的审核速度。在审核期间我们的网站最好是无法解析也就是关闭网站不能访问&#xff0c;这…

网站常见问题1分钟定位 - 如何使用阿里云ARMS轻松重现用户浏览器问题

客户投诉不断&#xff0c;本地却无法重现&#xff1f; 页面加载较慢是用户经常会反馈的问题&#xff0c;也是前端非常关注的问题之一。但定位、排查解决这类问题就通常会花费非常多的时间&#xff0c;主要原因如下&#xff1a; 页面是在用户端的浏览器上加载执行&#xff0c;复…

太赞了!京东研发一哥力荐的高可用网站构建技术PDF,备好水,慢慢啃

随着用户规模的增长&#xff0c;网站架构问题的难度也在成倍增加。构建一个京东规模的亿级流量网站和构建一个中小型网站的技术架构难度截然不同。 在具体的架构实践中&#xff0c;所需要考虑的问题也远比中小型网站多得多。开涛根据在京东网站架构工作期间的实战经验写成此书…

【转】6个超酷的网站,专门用于学习算法

来自&#xff1a;程序员书库&#xff08;ID&#xff1a;CodingBook&#xff09; 书单来自&#xff1a;https://levelup.gitconnected.com/6-super-cool-websites-for-practicing-algorithms-learning-programming-4cda65a64b7e 最近一位有着15年经验的老程序员和我们他认为最…

可以免费自学编程的12个网站

很多人包括一些企业家&#xff0c;和市场营销人员都认为学习编程对一个人走向成功十分有帮助。在过去的一年里&#xff0c;我一直在学习编程。它有助我成为一个更好的创业者&#xff0c;我甚至可以提供一些帮助&#xff0c;当我的团队需要解决一些bug的时候。 现在&#xff0c…

这些电影网站凭什么得到知乎50万人推荐?真是令人相见恨晚!

近几年随着国产电影的崛起&#xff0c;今年的一部科幻电影火的沸沸扬扬&#xff0c;平时我们看电影&#xff0c;有很多都是收费的&#xff0c;也有的需要会员才能看&#xff0c;不过这一切都已经不算什么了&#xff0c;下面我就来给大家分享4个免费看电影的网站。 一、神马影院…

全球20个程序员免费学习的网站,年薪百万的第一步!

神奇的网站有很多&#xff0c;今天推荐20个和学习有关的&#xff0c;而且都是免费的&#xff0c;希望对大家有所帮助。 1、Ruby regular expression editor 正则表达式编辑器&#xff0c;rubular.com 正则表达式太复杂了总也写不对?Rubular是一个Ruby-based的正则 表达式在…

个人博客一|抓取崔庆才个人博客网站前端源码

1、准备 工具&#xff1a;仿站小工具V9.0 工具获取方式一&#xff1a; 关注微信公众号 微信公众号『stormsha』&#xff0c;后台回复『仿站工具』获取工具 工具获取方式二&#xff1a; 仿站小工具官网 https://smalltool.github.io/崔庆才博客 https://cuiqingcai.com/从网站源…

PageAdmin Cms建站系统教程之栏目的添加和管理

PageAdmin建站系统作为国内用户最多的企业级网站建设系统&#xff0c;功能强大&#xff0c;扩展灵活&#xff0c;在国内拥有庞大的用户群体&#xff0c;系统可以免费下载使用&#xff0c;被众多个人站长和网站制作公司用于网站建设和二次开发&#xff0c;上一篇小编讲解了PageA…

全球银行网站成黑客主攻目标 阿里云提供安全防御应急方案

近日&#xff0c;阿里云监控发现&#xff0c;匿名者&#xff08;Anonymous&#xff09;组织成员正在发起针对全球中央银行网站的攻击行动&#xff0c;截止目前&#xff0c;国内有超过2家以上的重要网站被攻击&#xff0c;攻击特征主要为DDoS攻击和CC攻击。 此次事件中&#xff…

如何实现分享网站文章到微信朋友圈时显示指定缩略图或LOGO

当下朋友圈很火&#xff0c;很多企业都将微信朋友圈作为品牌传播的途径&#xff0c;经常会发一些精彩的文章到微信朋友圈供大家自发传播&#xff0c;这样的想法很好&#xff0c;对于优质的内容&#xff0c;网友们也乐于转发与朋友们分享&#xff0c;对品牌宣传与推广确实是有好…

nginx实现https网站设置(SSL证书生成配置)

部分内容转载自&#xff1a;https://www.cnblogs.com/jingxiaoniu/p/6745254.html一、HTTPS简介1.https简介HTTPS其实是有两部分组成&#xff1a;HTTP SSL / TLS&#xff0c;也就是在HTTP上又加了一层处理加密信息的模块。服务端和客户端的信息传输都会通过TLS进行加密&#x…

如何快速搭建个人网站

一般来说&#xff0c;搭建网站&#xff0c;首先需要借助一个云平台&#xff0c;具有存储库的功能&#xff0c;上面的东西发布后&#xff0c;能够被网络上所有人访问到&#xff0c;当然这云平台是有自己的一套机制进行后台的设定与运作的&#xff0c;我们只是在基础上使用&#…

利用 jQuery 操作页面元素的方法,实现电商网站购物车页面商品数量的增加和减少操作,要求单项价格和总价随着数量的改变而改变

查看本章节 查看作业目录 需求说明&#xff1a; 利用 jQuery 操作页面元素的方法&#xff0c;实现电商网站购物车页面商品数量的增加和减少操作&#xff0c;要求单项价格和总价随着数量的改变而改变当用户单击“”按钮时&#xff0c;文本框中的商品数量增加 1&#xff0c;单项…

利用自定义动画 animate() 方法,实现某图书网站中“近 7 日畅销榜”中的图书无缝垂直向上滚动特效:当光标移入到图书上时,停止滚动,鼠标移开时,继续滚动

查看本章节 查看作业目录 需求说明&#xff1a; 利用自定义动画 animate() 方法&#xff0c;实现某图书网站中“近 7 日畅销榜”中的图书无缝垂直向上滚动特效:当光标移入到图书上时&#xff0c;停止滚动&#xff0c;鼠标移开时&#xff0c;继续滚动 实现思路&#xff1a; 在…

快看!❤️又一超实用浏览器插件!常用网站自动整合,JSON格式化,CSDN全站去广告!多种工具一键调用。开发者的福音!

其实这个插件才出来的时候博主也下载了使用过&#xff0c;并没有什么亮点&#xff0c;那时候甚至觉得有点多余&#xff0c;因为CSDN全站去广告啥的&#xff0c;早就安装了油猴脚本&#xff0c;广告&#xff1f;不存在的嘿嘿。。 就在前几天看见CSDN的活动在推荐这款插件&#x…

outlook搜索栏跑到上面去了_学习网站seo优化技巧,先了解搜索引擎搜索原理-行业动态...

泰州网站建设好之后&#xff0c;首先就要对网站进行SEO优化。那搜索引擎优化的主要任务之一&#xff0c;就是确定网站的搜索引擎友好性&#xff0c;因而&#xff0c;网站优化的每个环节都与搜索引擎存在必定的联络&#xff0c;研讨搜索引擎优化实际上是对搜索引擎作业进程的逆向…

报错:清除网站内搜索框中的历史记录?

问题&#xff1a;我在搜索框内点击一下后&#xff0c;就会出现一些搜索记录&#xff0c;可有些关键词我并没有在该网站搜索过&#xff0c;而是与这个网站无关的一些关键词。而且不同的网站上似乎关键词有重叠。如下图所示&#xff0c;请问应该怎么清除这些历史记录呢&#xff1…