国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
博客園 - The shortest answer is doing - Asp.net地址轉(zhuǎn)義(分析)加強版--Dottext的地址分析模塊的不足之處及相應(yīng)的解決方案

(地址轉(zhuǎn)義:指像http://thinhunan.cnblogs.com/這樣的地址,被轉(zhuǎn)義成http://www.cnblogs.com/default.aspx頁面處理,default.aspx頁面在URL中獲得參數(shù):BlogName = thinhunan。)

Dottext博客程序用IHttpHandler myhandler= PageParser.GetCompiledPageInstance (url,pagepath,context)來進行地址轉(zhuǎn)義,這個方法返回的IHttpHandler的屬性IsReusable有時會等于True,就是說返回的Handler會被Cache,我們在做Dottext的擴展時(如二級域名),這個機制不會出現(xiàn)什么問題,這是因為其實Dottext中很多種的URL都是最終給一個頁面來處理,那就是能動態(tài)加載Control完成各種變化的Default.aspx頁面,但如果有以下情況,問題就出來了:
1、http://thinhunan.sjjjyz.com/bloghttp://www.sjjyz.com/blog 要由不同的aspx文件,也就是不同的類來處理時
2、http://thinhunan.sjjyz.com/blog/2005/10/27/234.html 和 http://thinhunan.sjjyz.com/blog/2005/10/27/234.html?comment=1 要由不同的類來處理時
3、同是http://thinhunan.sjjjyz.com/blog ,但要根據(jù)客戶端是IE還是手機由不同的類處理時

問題就出來了,因為Caching在緩存IHttpHandler時,Key根據(jù)的是Request的Path(或者FilePath)信息,就是說,不管是上面的第一種還是第二種情況,IHttpHandler會錯誤的看成是可以重用緩存中的前一次有細微不同的URL生成的IHttpHandler,而第三種情況,在我們的IHttpHandlerFactory類中,判斷客戶端的動作也不會執(zhí)行,因為HttpModules會在HttpHandlers之前進行動作,而在Machine.config文件中

        <httpModules>
            
<add
                
name="OutputCache"
                type
="System.Web.Caching.OutputCacheModule" />
……        
</httpModules>

Cache是第一個HttpModule,所以,如果第一次是用戶用手機訪問了你的首頁,那以后用IE來訪問的IE都會被送上一堆不能解析的WML代碼。

由此可見,PageParser.GetCompilePageInstance()方法也許并不能滿足我們的需求。那怎么辦呢?
對System.Web.UI進行改進和擴展?這是行不通的,因為其中大部分類、方法都是internal的,不同Assembly不能訪問。

可行的辦法是:其實System.Web.UI.Page本身繼承了IHttpHandler,而且它本身的IsReusable返回的是false,既然如此,那我們干脆只接用反射返回頁面實例就行了,實現(xiàn)代碼如下:

        private static Assembly _dotTextWebAssembly = null;
        
/// <summary>
        
/// Assembly
        
/// </summary>

        private static Assembly DotTextWebAssembly
        
{
            
get
            
{
                
if(_dotTextWebAssembly == null)
                
{
                    _dotTextWebAssembly 
= (Assembly)HttpRuntime.Cache["WebDllPath"];
                    
if(_dotTextWebAssembly == null)
                    
{
                        AssemblyName an 
= new AssemblyName();
                        an.Name 
= "Dottext.Web";
                        _dotTextWebAssembly 
= AppDomain.CurrentDomain.Load(an);
                        HttpRuntime.Cache.Insert(
"WebDllPath",_dotTextWebAssembly,null,System.Web.Caching.Cache.NoAbsoluteExpiration,TimeSpan.FromDays(1),System.Web.Caching.CacheItemPriority.NotRemovable,null);
    
                    }

                }

                
                
return _dotTextWebAssembly;
            }

        }

        
private static IHttpHandler GetWapHandlerByPage(string pageName)
        
{
            IHttpHandler waphandler 
= null;
            
//waphandler = (IHttpHandler)HttpRuntime.Cache["WapHandler_"+pageName]; 此處不能用Cache,因為Handler的IsReUsable為false;
            
//if(waphandler == null)
            
//{
                Type type = DotTextWebAssembly.GetType("Dottext.Web."+pageName.Replace(".aspx",""),true,true);
                waphandler 
= (IHttpHandler)System.Activator.CreateInstance(type);
                
//HttpRuntime.Cache.Insert("WapHandler_"+pageName,waphandler,null,System.Web.Caching.Cache.NoAbsoluteExpiration,TimeSpan.FromHours(1),System.Web.Caching.CacheItemPriority.NotRemovable,null);
            
//}
            return waphandler;
        }


-----------------------------------------
原創(chuàng)文章,轉(zhuǎn)載請注明出處

posted on 2005-11-03 15:55 THIN 閱讀(70) 評論(6)  編輯 收藏 收藏至365Key 所屬分類: ASP.net

評論:
# re: Asp.net地址轉(zhuǎn)義加強版 2005-11-03 16:03 | 匿了
哇塞?。?!~~~~~

老大,實在太帥了!

竟然寫出這樣讓人嘆為觀止的材料~

偶是來拜老大的!你永遠是偶滴老大!

加油~~

永遠支持你的粉絲...

  
# re: Asp.net地址轉(zhuǎn)義加強版 2005-11-03 16:05 | 非非.Net
地址轉(zhuǎn)義? 應(yīng)該是URL重寫
  
# re: Asp.net地址轉(zhuǎn)義加強版 2005-11-03 16:08 | THIN
URL重寫也行,URL重寫主要是對應(yīng)有個方法
System.Web.HttpContext.Current.RewritePath()中文翻譯剛好是地址重寫
  
# re: Asp.net地址轉(zhuǎn)義加強版 2005-11-03 16:08 | THIN
而且GetCompiledInstance本來也沒有重寫這個"動作"啊
  
# re: Asp.net地址轉(zhuǎn)義(分析)加強版--分析Dottext程序中的地址分析和轉(zhuǎn)義模塊在我們實際應(yīng)用中的不足之處以及相應(yīng)的解決方案 2005-11-03 16:23 | dudu
好方法!
文章題目長了點, 影響了首頁的顯示。
  
# re: Asp.net地址轉(zhuǎn)義(分析)加強版--Dottext的地址分析模塊的不足之處及相應(yīng)的解決方案 2005-11-03 16:47 | THIN
題目已做刪節(jié),呵呵
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
講解asp.net緩存cache定時更新數(shù)據(jù)
主流 Blog 程序
客戶端圖片緩存
ASP.NET轉(zhuǎn)義字符
Scott on Writing
ASP.NET 2.0防止同一用戶同時登陸
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服