2009-07-23 55 views
1

我想爲不同的資源路由傳入的請求,一些返回的文件(如css),其他人返回由服務器生成的響應,以及其他人被重定向到aspx頁面以實現AJAX功能。HttpHandlers和HttpHandlerFactory

當前配置使用HttpModule將所有請求重新映射到一個處理程序,在該處理程序中解析和分派URL,作爲服務器的入口點。

我想知道什麼是最好的配置來處理請求將是,我應該從HttpModule重映射到一個HandlerFactory,在那裏我解析url,並路由到基於該url的適當的處理程序,或者我應該嘗試設置它全部在web.config?

另請問我如何將請求路由到HttpHandler和HttpHandlerFactory的aspx頁面?

回答

1

如果將請求路由到各個處理程序的規則非常簡單(例如「.ext轉到處理程序xyz」),那麼您應該使用帶有web.config的內置.NET機制 - 沒有理由重新發明輪子這裏。如果邏輯可能更復雜或者處理的不僅僅是擴展映射,則模塊是合適的。其次,你應該使用一個HttpHandlerFactory,因爲一個工廠可以返回IHttpHandlers,而一個ASPX頁面是一個IHttpHandler的。所以,如果你使用自定義的工廠,如果您的邏輯決定了它應該「路線」,以一個ASPX頁面,您可以return an instance of the page直接從工廠:

IHttpHandler thePage = PageParser.GetCompiledPageInstance(
    requestPath, 
    pathToAspxFile, 
    httpContext); 

return thePage; 
+0

的URL方案是複雜/文件擴展名和資源段的混合物。當請求重映射到工廠時,url解析是否應該在HttpModule或HttpHandlerFactory中進行? – theringostarrs 2009-07-23 23:15:36

相關問題