自己定義的httpHandlers無法使用Session(ASP.net 1.1)

來源:互聯網
上載者:User
我不知道這是不是一個小BUG,但我已經沒有辦法解決這樣的問題。
在自己定義的一個httpHandlers裡,無法使用Session,每次出現的錯誤是對象沒有引用到執行個體。經過調試發現HttpContent雷根本沒有Session對象。
而且鬱悶的是,不管是自己的實現了IHttpHander的類,還是從Page繼承下來的類,只要在Web.Config裡添加了這個Hander,那麼在處理這個Hander的時候,都是無法使用Session對象的。
當然,應該不只Session對象不能使用,應該還有其它對象不能用,只是我沒有一一驗證。

另處一個問題就是關於驗證碼的問題。如果自己寫了一個Page用來產生動態驗證碼,但應用程式已經使用了From驗證,那麼在請求驗證碼的時候就會要先請求Form驗證,從而形成了一種死迴圈。
形成這種死迴圈的不僅僅是驗證碼上與Form驗證的問題,同樣也存在於頁面的驗證上。
一般,我們是採用login.aspx做為登入頁面,而這時,預設的login.aspx是不須要驗證的,否則就會進入死迴圈,從而使IIS掛起。
形成這樣設計錯誤很容易,例如我們做了一個父類,用於所有的頁面。而這個父類是要求驗證的,這時,如果login.aspx也從這個父類派生的話,那麼這樣的死迴圈就會出現。
再加上驗證碼及Handler裡的一些問題,就已經使得一個B/S結構的應用程式無法在單個Application上部署了。

當然,要解決上面的問題其實也很簡單:
1、產生的驗證碼的頁面不用驗證就行了。因此,有兩種做法,一是另外加一個web.config,從而使它可以在不用驗證的情況下產生圖片。
2、頁面驗證的死迴圈問題,如果login頁面也想從要求驗證的父類繼承,那麼唯一可行的辦法是重載父類的驗證方法,或者在login頁面上添加自己的特別認證,例如:給一個公用帳號,使它成為可以通過login頁面認證的帳號。
3、HttpHander裡無法訪問Session的問題,我目前沒有辦法解決,可行的方法是放棄使用HttpHander而用Page.

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.