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

StackOverflow https://stackoverflow.com/questions/3446338

Вопрос

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

Редактировать 1: Последний бит был спровоцирован Этот ответ на другой вопрос.

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

Это было полезно?

Решение

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

[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.

Другие советы

Вы можете изменить его во время выполнения. Инструкции и возможные подводные камни изложены здесь: http://www.beansoftware.com/asp.net-tutorials/modify-web.config-run-time.aspx.

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top