国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網(wǎng)站 > IIS > 正文

IIS7 會重用那些不該重用 HttpHandler

2024-08-29 03:13:57
字體:
供稿:網(wǎng)友
  • 網(wǎng)站運(yùn)營seo文章大全
  • 提供全面的站長運(yùn)營經(jīng)驗及seo技術(shù)!
  • 首先,實現(xiàn)ihttphandler時要實現(xiàn)一個isreusable的屬性,這個屬性告訴asp.net此httphandler是否可重用。如果一個httphandler是可重用的,那么多次請求都有可能用同一個httphandler實例;而如果一個httphandler是不可重用的,那么asp.net應(yīng)該確保每次請求使用的都是一個新構(gòu)造的httphandler實例。

    page是設(shè)計為不可重用,所以每次請求都會導(dǎo)致構(gòu)造一個新的page實例,這是因為page的生命周期不能恢復(fù)到初始狀態(tài),一個page經(jīng)歷完生命周期后就不能用于處理下一次的請求。類似的,如果我們有一個httphandler有類似的性質(zhì),處理一次請求后其狀態(tài)就難以恢復(fù)到適合于處理下一次請求,或者說恢復(fù)還不如構(gòu)造一個新的,那么我們就應(yīng)該設(shè)計為不可重用。

    我在做一個通過iframe提交的無刷新上傳控件,這東西包括一些httphandler,為的是能夠直接關(guān)聯(lián)到axd后綴而用于路徑無關(guān)的場合。其中有一個httphandler我直接繼承自page,并且寫得好像aspx+cs編譯出來的代碼那樣,在oninit階段構(gòu)建完整的控件樹。這個httphandler以前在xp的iis5上一直沒問題的,但到了vista的iis7就出問題了。

    先說明,在iis7我采用其新的配置模式,將<httphandlers />配置在<system.webserver />節(jié),而不是<system.web />節(jié),這是模仿著asp.net ajax的web.config做的。做好之后就發(fā)現(xiàn)問題了,這個用作httphandler的page竟然時候拋出exception,說page上面有多于一個的htmlform。仔細(xì)檢查后確認(rèn),我的page代碼確實僅僅添加了一個htmlform,并且這個exception不會出現(xiàn)在編譯后的第一次請求,于是我就懷疑page被重用了,所以oninit被多次執(zhí)行,這才可能導(dǎo)致它有多于一個htmlform。我啟用了page的trace,在render中注釋掉base.render,并且用trace輸出page上的htmlform數(shù)量,發(fā)現(xiàn)真的是每次請求都會導(dǎo)致多一個htmlform,這基本上可以肯定是因為page被重用了。

    然后我就用google搜索,結(jié)果發(fā)現(xiàn)forums.asp.net上有人提出了完全一樣的問題,他也是用page來做httphandler。我想只有拿page來做httphandler的人才會遇到這樣的問題,因為一般自己寫的httphandler都是無狀態(tài)的,所以都是可以重用的。而那張?zhí)又挥泄芾韱T回復(fù)了一句,“你最好去forums.iis.net問吧”。于是我就去iis.net搜索,結(jié)果發(fā)現(xiàn)沒有人提到過這個問題,于是只好自己去論壇提問,可惜等了一天都沒有人回答,看來iis7普及之前iis.net的人氣都不會上升(iis7的默認(rèn)歡迎頁面鏈接到iis.net)。

    最后,我選擇了先采用jeffrey zhao建議的work around,就是再制作一個httphandlerfactory,它負(fù)責(zé)每次返回page的新實例,然后在配置中改用該httphandlerfactory。這個解決方案實驗證明是可行的,就是多一個類而已,不知道性能損失有多少。如果有人知道這個問題的官方解決方案的話,或者有一個更好的work around,請告訴我,謝謝。

    發(fā)表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發(fā)表
    主站蜘蛛池模板: 汽车| 方山县| 泗阳县| 景洪市| 冷水江市| 西和县| 马龙县| 湖南省| 甘肃省| 渭源县| 永清县| 黎城县| 巴彦淖尔市| 堆龙德庆县| 马鞍山市| 叙永县| 措勤县| 临潭县| 安陆市| 晋城| 长乐市| 西峡县| 台北县| 泰安市| 顺平县| 柘荣县| 毕节市| 龙陵县| 双桥区| 错那县| 纳雍县| 桓仁| 长汀县| 武义县| 万年县| 洪洞县| 特克斯县| 茶陵县| 广东省| 成武县| 察雅县|