這裏的情景:如何設置一個自定義的HttpHandler不使用HttpContext.RemapHandler
我有,我想對特定URL運行一個HttpHandler,但這些網址沒有一致的擴展,這樣我就可以在web.config中使用httpHandlers映射處理程序。
相反,我有一個自定義的HttpModule,我訂閱PostAuthenticateRequest,檢查一些條件,並使用HttpContext.RemapHandler()分配我的自定義處理程序(如果當前URL符合要求)。
這是所有工作的偉大,但是...
爲了提高性能,我想只能做,如果處理程序尚未分配我的URL檢查和處理程序分配。我不會告訴你爲什麼我的處理程序只適用於沒有分配其他處理程序的情況,但情況總是如此。
這裏真正的問題是,如果處理程序已經分配上PostMapRequestHandler一個只能測試,到那個時候,爲時已晚使用RemapHandler(),因爲一個InvalidOperationException會拋出(見http://msdn.microsoft.com/en-us/library/system.web.httpcontext.remaphandler.aspx)
我認爲可能在這一點(但不)是HttpContext.Handler = x;而不是HttpContext.RemapHandler(x);
當設置這種方式時,HttpContext.CurrentHandler被更新,並且都顯得光榮,但自定義處理程序的ProcessRequest()永遠不會被調用。
預先感謝您的想法/意見/見解。
嗨,伯尼,謝謝你的建議。不幸的是,我不認爲它適用於我的情況,因爲我還需要根據HTTP Referrer內容做出處理程序決定,而不是單獨使用URL。但是,我原來的問題沒有說明。如果我在接下來的幾周內沒有收到任何進一步的答覆,我會立刻讚揚這一點,並將其標記爲答案。畢竟,你確實是以書面形式回答了這個問題。再次感謝! – JLB61000
@ JLB61000我已經更新了答案,希望這會給你更多的想法。 –