2011-11-28 98 views
2

我有一個global.asax,我想在Application_Start方法來檢查是否有一定名稱的IHttpHandler註冊。我怎樣才能做到這一點?如何檢查IHttpHandler是否被加載?

處理程序可以在自己的應用程序web.config文件或其他虛擬父目錄或machine.config中的一個聲明。

回答

1

我不知道一個公開的方法來做你所要求的。我想你想要的代碼是HttpContext.Current.ApplicationInstance.GetHandlerMapping(),.MapHttpHandler()或.MapIntegratedHttpHandler(),但它們是私有的或內部的方法。但是,您應該可以使用反射來調用它們。

另一種方法是嘗試錯誤類型測試(嘗試請求應該路由到預期處理程序的目標,並查看在幾個地方發生了什麼,例如HttpModule中的MapRequestHandler事件 - 但我認爲Application_Start爲時尚早

+0

是的,這是飛行的唯一方法jep,只是發出一個請求的東西。 –

0

使用WebConfigurationManager.OpenWebConfiguration方法閱讀web.config文件。由於ASP.NET Configuration File Hierarchy and Inheritance所以你需要讀取本地的web.config是提供給您的web應用程序所有這一切都在machine.config中添加這些配置部分。

Configuration config = WebConfigurationManager.OpenWebConfiguration("~/web.config"); 
HttpHandlersSection section = (HttpHandlersSection)config.GetSection("system.web/httpHandlers"); 

GridView1.DataSource = section.Handlers; 
GridView1.DataBind(); 
+1

處理程序可以在應用程序自己的web.config或其他虛擬父目錄或machine.config中聲明 –