Можете ли вы программически определить конфигурацию ASP.NET?
-
27-09-2019 - |
Вопрос
Можно ли определить большую часть, если не весь, 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, приложение необходимо перекомпилировать, так что это может быть раздражением. Тебе лучше выключить настройки в базе данных и использование тех, где вы можете. Проще модифицировать и менее разрушительный.