麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

IIS7 會重用那些不該重用 HttpHandler

2019-11-18 16:39:40
字體:
來源:轉載
供稿:網友

首先,實現IHttpHandler時要實現一個IsReusable的屬性,這個屬性告訴asp.net此HttpHandler是否可重用。如果一個HttpHandler是可重用的,那么多次請求都有可能用同一個HttpHandler實例;而如果一個HttpHandler是不可重用的,那么ASP.NET應該確保每次請求使用的都是一個新構造的HttpHandler實例。

Page是設計為不可重用,所以每次請求都會導致構造一個新的Page實例,這是因為Page的生命周期不能恢復到初始狀態,一個Page經歷完生命周期后就不能用于處理下一次的請求。類似的,如果我們有一個HttpHandler有類似的性質,處理一次請求后其狀態就難以恢復到適合于處理下一次請求,或者說恢復還不如構造一個新的,那么我們就應該設計為不可重用。

我在做一個通過IFrame提交的無刷新上傳控件,這東西包括一些HttpHandler,為的是能夠直接關聯到axd后綴而用于路徑無關的場合。其中有一個HttpHandler我直接繼承自Page,并且寫得好像aspx+cs編譯出來的代碼那樣,在OnInit階段構建完整的控件樹。這個HttpHandler以前在XP的IIS5上一直沒問題的,但到了Vista的IIS7就出問題了。

先說明,在IIS7我采用其新的配置模式,將<httpHandlers />配置在<system.webServer />節,而不是<system.web />節,這是模仿著ASP.NET Ajax的web.config做的。做好之后就發現問題了,這個用作HttpHandler的Page竟然時候拋出Exception,說Page上面有多于一個的HtmlForm。仔細檢查后確認,我的Page代碼確實僅僅添加了一個HtmlForm,并且這個Exception不會出現在編譯后的第一次請求,于是我就懷疑Page被重用了,所以OnInit被多次執行,這才可能導致它有多于一個HtmlForm。我啟用了Page的Trace,在Render中注釋掉base.Render,并且用Trace輸出Page上的HtmlForm數量,發現真的是每次請求都會導致多一個HtmlForm,這基本上可以肯定是因為Page被重用了。

然后我就用Google搜索,結果發現forums.asp.net上有人提出了完全一樣的問題,他也是用Page來做HttpHandler。我想只有拿Page來做HttpHandler的人才會遇到這樣的問題,因為一般自己寫的HttpHandler都是無狀態的,所以都是可以重用的。而那張帖子只有管理員回復了一句,“你最好去forums.iis.net問吧”。于是我就去iis.net搜索,結果發現沒有人提到過這個問題,于是只好自己去論壇提問,可惜等了一天都沒有人回答,看來IIS7普及之前iis.net的人氣都不會上升(IIS7的默認歡迎頁面鏈接到iis.net)。

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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 成人性视频在线 | 午色影院 | 91嫩草丨国产丨精品入口 | 成人黄色短视频在线观看 | jizzzzxxxxx| 中文字幕亚洲视频 | 精品国产一区二区三区四 | 国产69久久精品成人看 | 黑人一区二区 | 亚洲免费视频一区 | 国产91小视频在线观看 | 国产91九色视频 | chinese18 xxxx videos| 日韩黄在线观看 | av在线视| 国产福利视频 | 在线观看免费毛片视频 | 黄污网址 | 欧美无极品 | 久久777国产线看观看精品 | 古装三级在线观看 | 一级做a爱片性色毛片高清 日本一区二区在线看 | 草b视频在线观看 | 亚洲视频在线网 | 操碰在线视频 | 国产一区影院 | 黄色大片网 | 久久久久久久久成人 | 欧美成人免费在线视频 | 艹男人的日日夜夜 | 极品销魂一区二区三区 | 久久婷婷一区二区三区 | 久久久裸体视频 | 中文字幕网站在线 | av电影观看 | 亚洲第一成网站 | 国产精品久久久久久久午夜片 | 7777视频| 欧美一级美国一级 | 久久久久久久久久久久久九 | 国产精品一区二区视频 |