Frage

Ist es möglich, einen großen Teil zu definieren, wenn nicht die gesamte, web.config eine ASP.NET-Anwendung in Code? Wenn das so ist, wie? Würden Sie eine IHttpModule verwenden? In der gleichen Richtung, können Sie einen IHttpHandler innerhalb des Moduls zu behandeln alle eingehenden Anfragen lösen?

Bearbeiten 1: Das letzte Stück wurde von dieser Antwort angestiftet zu eine andere Frage .

Edit 2: Was will ich wirklich zu tun ist, Module hinzufügen / entfernen und Handler in Code in Bezug auf die web.config gegenüber. Ich wahrscheinlich muß mindestens ein Modul in der web.config festgelegt, dass dies ermöglichen würde. Kann ich dann zusätzliche Module und Handler registrieren? Ich bin nur Möglichkeiten zu erforschen.

War es hilfreich?

Lösung

Anstatt Konfiguration ändern, können Sie Httphandlers beim Start der Anwendung in Code registrieren, um die PreApplicationStartupMethod verwenden. Beispielcode (von Nikhil Kothari 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();
            });
        }
    }
}

Siehe auch Phil Haack Post, drei versteckte Extensibility Gems in ASP.NET 4 .

Andere Tipps

Sie können es während der Laufzeit ändern. Hinweise und mögliche Gefahren sind hier aufgeführt: http: //www.beansoftware.com/ASP.NET-Tutorials/Modify-Web.Config-Run-Time.aspx

Ich habe mehr Web-Anwendungen gesehen, die die Konfiguration während der Installation oder Wartung Prozess ändern. (DotNetNuke macht es während der Installation und AspDotNetStorefront verändert verschiedene Einstellungen als Teil des Konfigurationsassistenten.)

Aber denken Sie daran, dass jedes Mal, wenn Sie die web.config ändern, die App-Anforderungen neu zu kompilieren, so kann es ein Ärgernis sein. Sie wären besser dran, Einstellungen in einer Datenbank speichern und mit denen, wo Sie können. Einfacher zu ändern und weniger störend.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top