2010-08-10 4 views
1

Возможно ли определить большую часть, если не весь, web.config приложения ASP.NET в коде? Если да, то как? Вы бы использовали IHttpModule? В том же ключе вы можете разрешить IHttpHandler в указанном модуле для обработки всех входящих запросов?Можете ли вы программно определить конфигурацию ASP.NET?

Редактировать 1: Последний бит был спровоцирован this answer to another question.

Редактировать 2: Что я действительно хочу сделать, это добавить/удалить модули и обработчики кода, а не web.config. Вероятно, мне нужно, по крайней мере, установить модуль в файле web.config, который позволит это. Могу ли я затем зарегистрировать дополнительные модули и обработчики? Я просто изучаю возможности.

ответ

1

Вместо изменения конфигурации вы можете зарегистрировать HttpHandlers при запуске приложения в коде с помощью PreApplicationStartupMethod. Пример кода (от Nikhil Kothari's blog post):

[assembly: PreApplicationStartMethod(typeof(UserTrackerModule), "Register")] 

namespace DynamicWebApp.Sample { 

    public sealed class UserTrackerModule : IHttpModule { 

     #region Implementation of IHttpModule 
     void IHttpModule.Dispose() { 
     } 

     void IHttpModule.Init(HttpApplication application) { 
      application.PostAuthenticateRequest += delegate(object sender, EventArgs e) { 
       IPrincipal user = application.Context.User; 

       if (user.Identity.IsAuthenticated) { 
        DateTime activityDate = DateTime.UtcNow; 

        // TODO: Use user.Identity and activityDate to do 
        //  some interesting tracking 
       } 
      }; 
     } 
     #endregion 

     public static void Register() { 
      DynamicHttpApplication.RegisterModule(delegate(HttpApplication app) { 
       return new UserTrackerModule(); 
      }); 
     } 
    } 
} 

Также см пост Фила Хаака, Three Hidden Extensibility Gems in ASP.NET 4.

2

Вы можете изменить его во время выполнения. Инструкции и возможные подводные камни описаны здесь: http://www.beansoftware.com/ASP.NET-Tutorials/Modify-Web.Config-Run-Time.aspx

Я видел несколько веб-приложений, которые изменяют конфигурацию во время процесса установки или обслуживания. (DotNetNuke делает это во время установки, а AspDotNetStorefront изменяет несколько параметров как часть мастера настройки.)

Но помните, что каждый раз, когда вы меняете web.config, приложение необходимо перекомпилировать, так что это может быть раздражение. Вам лучше не сохранять настройки в базе данных и использовать те, где вы можете. Легче модифицировать и менее разрушительно.

+0

Спасибо за ваш ответ, Дэвид. Возможно, это касается того, что я пытаюсь выяснить. Я обновил свой вопрос, чтобы уточнить мои намерения. – 2010-08-10 18:43:39

 Смежные вопросы

  • Нет связанных вопросов^_^