关于使用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刷新可以正常运行,不知道为什么,请高手指点。

原文地址:https://www.cnblogs.com/AlexanderZhao/p/10593629.html