1. 程式人生 > >請求上下文HttpContext解釋

請求上下文HttpContext解釋

asp.net 身份驗證 tasks rom == 對象 他也 cal isa

1 HttpContext上下文作用

有關應用程序狀態信息,處理的請求以及構建的響應等信息全部通過HttpContext上下文獲取

2 Httpcontext類用於從頭至尾跟蹤請求的狀態,他也是有關請求的所有可用信息(包括httpRequest和httpResponse對象)的通道

3 模塊

模塊將實現System.web.IHttpModule接口,System.web.IHttpModule接口有兩個方法

Init(app):實例化模塊類並將其傳遞給HttpApplication實例時,調用此方法。使用此方法可為HttpApplication事件註冊處理程序方法。

Dispose() 在完成請求處理後調用此方法

模塊將在新建HttpApplication對象時進行實例化,每個HttpApplication對象都會獲取它自己的一組模塊對象,在實例化模塊時將調用Init()方法,

和HttpApplication對象一樣,模塊也可用於處理多個請求(但一次只處理一個請求)

4 如何創建自定義的模塊

創建一個實現IHttpModule的類

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace Events
{
    /// <summary>
    /// 模塊功能,防止未通過身份驗證的用戶訪問指定的窗體
    
/// </summary> public class ParamsModule : IHttpModule { public void Dispose() { } public void Init(HttpApplication app) { app.PostAuthenticateRequest += (src, args) => { if (app.Request.Url.LocalPath=="
/Params.aspx"&&!app.User.Identity.IsAuthenticated) { app.Context.AddError(new UnauthorizedAccessException()); } }; } } }


第二部註冊自定義的模塊(asp.net framework不會自動搜索模塊類),使它成為生命周期的一部分,在web.config文件中註冊

<system.webServer>
<modules>
<add name="ParamsProtecttion" type="Events.ParamsModule"/>
</modules>
</system.webServer>

如何讓模塊自動註冊到asp.net framework,而不用使用配置?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web;

//特性告訴asp.net fromework他應在應用程序啟動時調用ModuleRegistration類中的RegisterModules方法
[assembly:PreApplicationStartMethod(typeof(CommonModules.ModuleRegistration), "RegisterModules")]
namespace CommonModules
{
    public  class ModuleRegistration
    {
        public static void RegisterModules()
        {
            Type[] moduleTypes =
            {
                typeof(CommonModules.TimerModule),
                typeof(CommonModules.LogModule)
            };

            foreach (Type item in moduleTypes)
            {
                HttpApplication.RegisterModule(item);
            }
        }
    }
}

這樣就不用在web.config文件中註冊了

請求上下文HttpContext解釋