Можете ли вы программно определить конфигурацию ASP.NET?

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

Изменить 1: последний бит был инициирован этим ответом на другой вопрос < / а>.

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


person Community    schedule 10.08.2010    source источник


Ответы (2)


Вместо изменения конфигурации вы можете зарегистрировать HttpHandlers при запуске приложения в коде с помощью PreApplicationStartupMethod. Пример кода (из записи в блоге Нихила Котари):

[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();
            });
        }
    }
}

Также см. Сообщение Фила Хаака Три скрытых жемчужины расширяемости в ASP.NET 4.

person Jon Galloway    schedule 10.08.2010

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

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

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

person David    schedule 10.08.2010
comment
Спасибо за ответ, Дэвид. Возможно, это касается того, что я пытаюсь выяснить. Я обновил свой вопрос, чтобы уточнить мои намерения. - person ; 10.08.2010