Как автоматически изменить файл web.config при использовании пользовательского элемента управления сервером? - PullRequest
0 голосов
/ 03 октября 2011

Я пытаюсь создать пользовательский серверный элемент управления в C # с использованием VS2008. Я использую этот пользовательский элемент управления, который фактически требует от меня изменения файла web.config, чтобы добавить HttpHandler при добавлении этого элемента управления на страницу клиента.

Мой вопрос довольно прост:

Что необходимо добавить к моему пользовательскому управляющему коду, чтобы он регистрировал необходимую HttpHandler информацию в web.config? Некоторые родные элементы управления уже делают это. Например, AJAX Toolkit изменит web.config. Как я могу сделать что-то подобное с моим контролем?

Ответы [ 2 ]

1 голос
/ 03 октября 2011

Если у вас есть элемент в наборе инструментов 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
}
0 голосов
/ 03 октября 2011

Просмотрите Любой способ программно добавить HttpHandler в поток .NET? , в котором описывается, как выполнить аналогичную задачу во время выполнения.Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...