如何修改web.使用自定义服务器控件时自动配置

本文关键字:服务器控件 自定义 配置 何修改 修改 web | 更新日期: 2023-09-27 18:10:16

我正在尝试使用VS2008在c#中创建自定义服务器控件。我正在使用这个自定义控件,它实际上需要我修改web.config文件,以便在将该控件添加到客户端页面时添加HttpHandler

我的问题很简单:

需要添加什么到我的自定义控件代码中,以便它在web.config中注册所需的HttpHandler信息?一些本地控件已经做到了这一点。例如,AJAX Toolkit将修改web.config。我怎样才能对我的控件做类似的事情呢?

如何修改web.使用自定义服务器控件时自动配置

如果您在Visual Studio的工具箱中有一个项目,您可以在开发人员将该控件拖放到网页上时执行此操作。您需要用System.ComponentModel.DesignerAttribute修饰控件,以将其引用到System.Web.UI.Design.ControlDesigner的子类(您创建的)。在本课程中,你可以重写Initialize在这里,你可以通过System.Web.UI.Design.IWebApplication获得配置,像这样:

var service = this.GetService(typeof(System.Web.UI.Design.IWebApplication)) as IWebApplication;
if (service != null)
{
    var configuration = service.OpenWebConfiguration(false);
    if (configuration != null)
    {
        var section = configuration.GetSection("system.web/httpHandlers") as HttpHandlersSection;
        if (section != null)
        {
            var httpHandlerAction = new HttpHandlerAction("MyAwesomeHandler.axd", typeof(MyAwesomeHandler).AssemblyQualifiedName, "GET,HEAD", false);
            section.Handlers.Add(httpHandlerAction);                
            configuration.Save();
        }
        else 
        {
            // no system.web/httpHandlers section found... deal with it
        }
    }
    else 
    {
        // no web config found... 
    }
}
else 
{
    // Couldn't get IWebApplication service
}

查看在。net中以编程方式添加HttpHandler的任何方法?线程,它描述如何在运行时完成类似的任务。