2011-11-28 78 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中声明 –