网站根目录无 global.asax 这个文件, 如何实现让 Application_BeginRequest 这个方法得到执行?

hailan_li 2017-10-21 02:37:09
网站根目录无 global.asax 这个文件, 如何实现让 Application_BeginRequest 这个方法得到执行?


意思是我有一个网站项目,以后编译发布,最后混淆、加壳,让别人使用,如果对方删除了global.asax ,那么global.asax 里面定义的全局方法都无法执行了,授权、全局校验一切都做不到了,我是想如果删除这个文件,我们能不能在APP_CODE 或其他 C#应用程序里面定义一些方法和类,实现对 application_beginRequest 的重写,或者只要能让这个方法能运行也行,放到APP_CODE或通过其他方式写的DLL,放到网站BIN目录,无需GLOBAL.ASAX文件也可以呢?

万分感谢!!
...全文
498 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
hailan_li 2017-10-23
  • 打赏
  • 举报
回复

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.SessionState;
using Microsoft.Web;
using Microsoft.Web.Infrastructure;
using Microsoft.Web.Infrastructure.DynamicModuleHelper;
using WebActivator;
using System.Security;
using System.Security.Cryptography;
using System.Text;
using System.Data;
using System.Data.OracleClient;


[assembly: System.Web.PreApplicationStartMethodAttribute(typeof(RoutingCore.FristExecuteClass), "FristExecute")]
namespace RoutingCore
{
    public class FristExecuteClass
    {
        private static bool hasLoaded;
        public static void FristExecute()
        {

            if (!hasLoaded)
            {
                hasLoaded = true;

                DynamicModuleUtility.RegisterModule(typeof(RoutingModule));
            }
        }
    }

    public class RoutingModule : IHttpModule
    {

        public const string entrypted_key = "938BNCE27394E271036848EECABECD0";
        public void Init(HttpApplication context)
        {
            context.BeginRequest += new EventHandler(context_BeginRequest);
            context.Error += new EventHandler(context_ErrorRequest);
        }
        void context_BeginRequest(object sender, EventArgs e)
        {
            HttpApplication ap = sender as HttpApplication;
             
        }

        void context_ErrorRequest(object sender, EventArgs e)
        {
            HttpApplication ap = sender as HttpApplication;
          
        }
   }
}
新建一个C#项目,添加一个.CS类文件,文件里面的代码内容如上,编译生成DLL,这个DLL放到网站BIN目录就可以了,控制全局,要求.NET 4.0
  • 打赏
  • 举报
回复
如果是我的话,如果用户打电话让我免费维护,我会问“你为什么要删除 global.asax文件啊?修复程序和数据这不属于正常维护、要给10万元”。你为什么还要让他们删除了 global.asax 之后还能快乐地使用你的网站? 唯一的解释,就是你的系统太简单了,以至于 global.asax 中跟本设计不出来什么全局的东西。
  • 打赏
  • 举报
回复
人家既然花钱买你们的软件,你还要人家删除了 globa.asax 之后还能正常使用、同时又要能让你们的阴暗的后门启动干什么啊?你可以直接把程序自毁了。
hailan_li 2017-10-21
  • 打赏
  • 举报
回复
我在网上看到这样一个资料,请求具体要如何才能得以实现呢?   非配置文件的方式注册HttpModule   在Asp.net4.0中,可以不修改配置文件也能达到完成Moudle注册的目的。从.Net 3.5开始,新提供的PreApplicationStartMethodAttribute特征可以应用在程序集上,使得自定义的网站初始化代码可以在Web应用程序的Application_Start初始化环节之前就执行。这个步骤甚至在动态编译和执行Application_Start之前。对于每个程序集,可以定义一次。特征的定义如下: 复制代码 [AttributeUsageAttribute(AttributeTargets.Assembly,AllowMultiple = false)] public sealed class PreApplicationStartMethodAttribute:Attribute { public Type Type{ get; } public string MethodName{ get; } ... }
hailan_li 2017-10-21
  • 打赏
  • 举报
回复
iHttpModel 也不行,因为需要在web.config 配置,懂程序的人删除配置就失效了
hailan_li 2017-10-21
  • 打赏
  • 举报
回复
或者有什么办法能控制这个网站,只要用户发请求访问 .aspx 页面,要DLL(BIN目录)或APP_CODE里面写一个类,我就能监视到,就能控制优先执行完我的函数方法才轮到.aspx页面的执行和相应

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧