网站根目录无 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文件也可以呢?

万分感谢!!
...全文
486 6 打赏 收藏 转发到动态 举报
写回复
用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页面的执行和相应
告别 iframe 和 Js调用的天气预报,这些天气预报插件大部分都有外连接,或者弹窗程序,调用速度也比较慢,样式也是由他们定制的,也许和您的网站外观很不匹配。 API天气预报插件的优点 1.使用专业api接口,获取数据快,可直接获取三天。 2.每次打开调用页面的时候并不获取天气信息,所以天气插件不会影响到您网站的速度。 3.每10--30分钟在net后台自动获取天气信息一次,不存在手动更新,很方便。 4.没有任何外连接。完全展示大站风采。 5.样式有自己掌握,想做成啥样式的天气预报都可以(图标也可以自己换)。 6.使用XML形式储存,基本上不占用网站资源。 7.已经写成专业类库,只需要 new一个类就可以使用了,略懂皮毛的也能运用自如。 其实我不分析大家也应该能感觉得到调用其他站点天气的痛苦,呵呵,所以才有了这个插件。 演示站点:http://www.hhhjw.com/ 首页右侧,点-查看详情 本插件完全免费使用,天气插件使用客户QQ群6774488 插件资源来自于网络,若此程序伤害到您的利益,请联系QQ130944520 使用方式简述: 第一步 用记事本打开网站根目录web.config,找到节点,插入: 泉州是城市名称,不要带市。 第二步 根目录Global.asax.cs文件,引入:using PowerLabs.Plug.Api 命名空间; 找到 public class Global : System.Web.HttpApplication 在括号内第一行加上 private static bool inited = false; //要加上,控制字段 private static object initLocker = new object(); //要加上,互斥锁 找到protected void Application_BeginRequest(object sender, EventArgs e) 在括号内第一行加上 //加上以下代码 if (inited == false) { #region 初始化 lock (initLocker) //lock 关键字将语句块标记为临界区,方法是获取给定对象的互斥锁,执行语句,然后释放该锁。 { if (inited == false) { //启动天预报 WeatherXml.StartWeather(); //持续定义定时器,用来持续获取天气 WeatherXml.Init(); inited = true; } } #endregion } 以上2步已经回在您的网站Weather目录下更新了数据文件Weather.config(可以用记事本打开看) 第三步 页面调用。 任何页面才CS部分引入:using PowerLabs.Plug.Api 命名空间; 然后再人以位置加上以下代码就可以了。 WeatherModel myWeather = new WeatherModel(WeatherXml.getWeather()); 就是new一个我的天气 可以获得的字段 /// /// 省份 myWeather.Provinces /// /// /// 城市 myWeather.City /// /// /// 城市代码 myWeather.CityCode /// /// /// 城市图片名称 myWeather.CityImgName /// /// /// 接口更新时间 myWeather.ApiUpDateTime /// /// /// 今天气温 格式:13℃/25℃ myWeather.TodayTemperature /// /// /// 今天的日期和天气 格式:10月5日 晴 myWeather.TodayWeather /// /// /// 今天风向 myWeather.TodayWind /// /// /// 今天天气开始图标 myWeather.TodayStartIcon /// /// /// 今天天气结束图标 myWeather.TodayEndIcon /// /// /// 今天天气实况 myWeather.TodayTheWeather /// /// /// 今天室外各指数 myWeather.TodayOutdoor 这个是一个一位数组,不会使用看压缩包中的例子。 /// /// /// 明天气温 格式:13℃/25℃ myWeather.TomorrowTemperature /// /// /// 明天的日期和天气 格式:10月5日 晴 myWeather.TomorrowWeather /// /// /// 明天风向 myWeather.TomorrowWind /// /// /// 明天天气开始图标 myWeather.TomorrowStartIcon /// /// /// 明天天气结束图标 myWeather.TomorrowEndIcon /// /// /// 后天气温 格式:13℃/25℃ myWeather.AfterTemperature /// /// /// 后天的日期和天气 格式:10月5日 晴 myWeather.AfterWeather /// /// /// 后天风向 myWeather.AfterWind /// /// /// 后天天气开始图标 myWeather.AfterStartIcon /// /// /// 后天天气结束图标 myWeather.AfterEndIcon /// /// /// 本城市简介 myWeather.ThisCity /// 也可以在aspx文件直接调用,调用方式:获得今天气温:<%=myWeather.TodayTemperature%> 其他类似。

62,041

社区成员

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

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

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

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