欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
初窺asp.net Runtime之二

上篇地址http://www.cnblogs.com/wmj/archive/2008/03/03/1088298.html
    上一篇中,通過(guò)實(shí)現
IHttpModule接口,就看到網(wǎng)頁(yè)上輸出了兩句話(huà),這是怎么回事呢?先別急,通過(guò)反射,先看看HttpApplication到底定義了那些事件!


My god,這么多事件!

在此,先弄清楚一個(gè)先后順序問(wèn)題,向IHttpModule訂閱的事件處理方法,并不一定優(yōu)先于IHttpHandler的方法先執行,比如IHttpHandler.ProcessRequest方法優(yōu)先于IHttpModule.EndRequest事件處理方法,這很明顯!在HttpModule中的主要任務(wù)就是向HttpApplication發(fā)出訂閱,至于訂閱的處理方法,什么時(shí)候執行,得看請求執行到了哪里,所以如果要實(shí)現自定義的IHttpModule,只要做兩件事;訂閱和實(shí)現訂閱的處理方法?。ㄖx謝Cat Chen的提醒)

在上一篇中,我只實(shí)現了BeginRequestEndRequest方法,看看系統中是怎樣定義的
// 摘要:
//     ASP.NET 響應請求時(shí)作為 HTTP 執行管線(xiàn)鏈中的第一個(gè)事件發(fā)生。
EndRequest定義
// 摘要:
//     ASP.NET 響應請求時(shí)作為 HTTP 執行管線(xiàn)鏈中的最后一個(gè)事件發(fā)生。

至于HttpApplication的其他方法,在后面的環(huán)節中再說(shuō)。

    這時(shí)候,突然想到一件事,那時(shí)我剛接觸網(wǎng)絡(luò ),朋友幫我申請了一個(gè)免費的空間,我做了一個(gè)人主頁(yè)放到空間里!出了一怪事(當時(shí)認為),在我的個(gè)人主頁(yè)的頁(yè)眉和頁(yè)腳上,莫名其妙的被別人加上了一些情色廣告!當時(shí)很納悶,怎么也弄不掉那些廣告,但是查看html的源文件,壓根看不到任何異常的demo!后來(lái)才知道運營(yíng)商為了自己的利益,在IHttpModule模塊上做了手腳!

 (HttpModule應用)還是動(dòng)手做一個(gè)Moduled的例子吧!

曾經(jīng)看到園子中有朋友,在自定義的Module中,訂閱了授權事件HttpApplication.OnAuthorizeRequest,然后在授權事件的處理方法中,從Session[“key”]集合中獲取用戶(hù)標識ID,并和當前請求的用戶(hù)標識ID比較,如果與Session[“key”]集合中的用戶(hù)標識ID相同,就授權,不同或者沒(méi)有用戶(hù)標識ID,就不授權!當然,這種基于URL授權的想法不錯!

但是,有幾點(diǎn)需要考慮到?。ㄕf(shuō)明不是針對那為朋友,只是找個(gè)案例罷了......)
    
一,OnAuthorizeRequest事件的處理方法中,session集合還沒(méi)有生成,又怎能取值呢?

    
二,從數據庫中查找用戶(hù)ID,性能肯定有損耗,有人可能會(huì )想到,我只在登錄的時(shí)候查詢(xún)一次數據庫,然后保存起來(lái),哈哈,不過(guò)還是有點(diǎn)麻煩,因為此時(shí)cachesession等都不能用,只有application可以使用,難道把用戶(hù)ID保存在HttpApplication對象里嗎?(HttpApplication不是隔離的,怎感覺(jué)不妥)

三,解決辦法,目前只是猜想,哈哈,思路是這樣的!
HttpApplication. OnAuthorizeRequest事件的處理方法之前,或者之中,想辦法提前獲取請求關(guān)聯(lián)的狀態(tài),這里指會(huì )話(huà)狀態(tài)(session)!哈哈

現在,我就在OnAuthorizeRequest事件的處理方法中,做一些簡(jiǎn)單的處理,判斷請求的類(lèi)型,如果不為get或者post類(lèi)型,就終止這個(gè)Http管道中的其他事件,直接跳到EndRequest事件!

配置,就不說(shuō)了

class AuthorHttpModule : System.Web.IHttpModule//, IRequiresSessionState
{
    
public AuthorHttpModule()
    
{ }
    
public void Init(System.Web.HttpApplication application)
    
{
        
application.AuthorizeRequest += new EventHandler(this.OnAuthorize);
        
application.AcquireRequestState += new EventHandler(application_AcquireRequestState);
    
}
    
public void OnAuthorize(Object sender,EventArgs e)
    
{
        
HttpApplication application = (HttpApplication)sender;
        
HttpContext context = application.Context;
        
HttpRequest request = context.Request;
        
HttpResponse response = context.Response;
        
string type = request.HttpMethod;
        
if (type.ToLower() == "get" || type.ToLower() == "post")
        
{ }
        
else
        
{
            
application.CompleteRequest();
            
response.StatusCode = 500;
            
response.StatusDescription = "SORRY,Request's type must be Get or Post!";
        
}
        
HttpApplicationState app1=context.Application;
        
HttpApplicationState app2 = application.Application;
        
App1["app1"] = "appValue1";
        
App2["app2"] = "appValue2";
        
HttpSessionState sessionState = context.Session;
        
//sessionState["ss1"] = "sss";//here ,throw Exception object
    
}
    
void application_AcquireRequestState(object sender, EventArgs e)
    
{
        
HttpApplication application = (HttpApplication)sender;
        HttpContext context = application.Context;
        HttpRequest request = context.Request;
        HttpResponse response = context.Response;
        HttpSessionState sessionState = context.Session;
        sessionState["ss"] = "ssValue";
    }
    public void Dispose()
    { }
}

說(shuō)明;
    一,application.CompleteRequest()方法終止這個(gè)Http管道中的其他事件,直接跳到EndRequest事件!然后設置響應的狀態(tài)代碼為500!

二,HttpApplicationState app1=context.ApplicationHttpApplicationState app2 = application.Application;方法都是獲取服務(wù)器的HttpApplicationState集合!而且,在授權事件中可以獲取或者設置,但是HttpSessionState集合不行?。ǖ窃?/span>AcquireRequestState事件中可以獲取或者設置HttpSessionState集合)!

最后;

    雖然application.CompleteRequest()方法終止了Http管道中的其他事件,直接跳到EndRequest事件,但是后面的application.PreSendRequestHeadersapplication.PreSendRequestContent事件仍然會(huì )執行,不信試試!    
    雖然我們自定義了自己的Module,但并不會(huì )覆蓋系統默認的Module,順序是先系統的,后自己定義的,如果想完全清除系統的Module,在configremove掉對應的項就OK!

    有不妥之處,還望指教!

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
實(shí)現多個(gè)ASP.NET跨程序池共享Session [高效]
IHttpModule的那些事
ASP.Net中自定義Http處理及應用之HttpModule篇
HttpModule的認識
asp.net MVC 應用程序的生命周期(上)
Global.asax詳解
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久