的含义"> asp.net中<modules runAllManagedModulesForAllRequests="true">的含义-坤哥网
当前位置:坤哥网-kungge-asp.net中<modules runAllManagedModulesForAllRequests="true">的含义

asp.net中<modules runAllManagedModulesForAllRequests="true">的含义

2017/9/12 11:36:34 kungge阅读(75) 评论(0)


runAllManagedModulesForAllRequests这个属性根据字面意思是针对所有的请求触发所有的托管的module,它类似IIS modules针对请求的一个开关,当属性为true时表示所有的请求都会进入modules中进行处理,包括静态文件的请求,这种情况下会造成性能损耗,因为静态文件一般只需直接返回不需要进入module经过程序处理。

asp.net默认这个属性为false,本人也强烈建议不要设置这个属性为true。

为了验证这个结果,我们做个小例子,在全局文件Global.asax中添加Application_BeginRequest方法:

        protected void Application_BeginRequest(object sender, EventArgs e)
        {
            using (StreamWriter sw = new StreamWriter(Server.MapPath("~/Content/ApplicationLog.txt"), true))
            {
                sw.WriteLine($"请求开始 MvcApplication Application_BeginRequest 请求地址:{Request.Url.ToString()} {DateTime.Now.ToString()}");
            }
        }

这个事件会第一个被执行,在方法内将请求的信息写入到一个文本文件中。

注:这个知识属于asp.net管道模型,我会在后面文章对这块进行详解。


新建一个视图页,引用两张图片:

@{
    ViewBag.Title = "Test";
}

<h2>Test</h2>

<img src="~/Content/images/ofo2017.jpg" />
<img src="~/Content/images/xggsly.jpg" />

0ea1e47c-e35f-4f6d-bbbb-a30808a5bae9.png

在web.config默认对modules不设置则表示runAllManagedModulesForAllRequests="false",文本文件内容只有一个页面的请求进入:

请求开始 MvcApplication Application_BeginRequest 请求地址:http://www.test1.com/home/test 2017/9/12 11:12:09

当设置runAllManagedModulesForAllRequests="true"时,文本文件内容不光有一个页面的请求进入,还包括静态图片的请求:

请求开始 MvcApplication Application_BeginRequest 请求地址:http://www.test1.com/home/test 2017/9/12 11:13:13
请求开始 MvcApplication Application_BeginRequest 请求地址:http://www.test1.com/Content/images/ofo2017.jpg 2017/9/12 11:13:15
请求开始 MvcApplication Application_BeginRequest 请求地址:http://www.test1.com/favicon.ico 2017/9/12 11:13:16


asp.net管道模型 modules

发表评论 没有账号,注册评论

博主

  • 用户名:kungge
  • 昵称:kungge

文章标签