关于使用PreApplicationStartMethod实现module注册问题
在使用PreApplicationStartMethod实现module注册问题发现一个问题:
//用PreApplicationStartMethod实现自注册模块 [assembly: PreApplicationStartMethod(typeof(CommonModule.ModuleRegistration), "RegisterModule")] namespace CommonModule { public class ModuleRegistration { /// <summary> /// 方法必须是public static /// </summary> public static void RegisterModule() { HttpApplication.RegisterModule(typeof(CommonModule.InfoModule)); } } }
上面代码是实现模块的自注册,
using System.Web; namespace CommonModule { public class InfoModule : IHttpModule { public void Dispose() { } public void Init(HttpApplication context) { HttpContext ctx = HttpContext.Current; //使用该方法只执行一次 //context.EndRequest += (src, args) => //{ // ctx.Response.Write(string.Format( // "<div class='alert alert-success'>URL: {0} Status: {1}</div>", // ctx.Request.RawUrl, ctx.Response.StatusCode // )); //}; //每次都执行 context.EndRequest += (src, args) => { context.Context.Response.Write(string.Format( "<div class='alert alert-success'>URL: {0} Status: {1}</div>", ctx.Request.RawUrl, ctx.Response.StatusCode )); }; } } }
上面是模块的实现,问题是使用ctx.Response.Write,模块只是在程序启动时允许一次,F5刷新不再允许,
改为使用context.Context.Response.Write时,F5刷新可以正常运行,不知道为什么,请高手指点。