سؤال

هل من الممكن تحديد جزء كبير ، إن لم يكن بالكامل ، web.config لتطبيق ASP.NET في الكود؟ إذا كان الأمر كذلك ، كيف؟ هل يمكنك استخدام ihttpmodule؟ وعلى نفس المنوال ، هل يمكنك حل ihttphandler داخل الوحدة المذكورة للتعامل مع جميع الطلبات الواردة؟

تحرير 1: تم تحريض الشيء الأخير من قبل هذه الإجابة على سؤال آخر.

تحرير 2: ما أريد فعله حقًا هو إضافة/إزالة الوحدات النمطية والمعالجات في الكود بدلاً من web.config. ربما أحتاج إلى تعيين وحدة نمطية على الأقل في web.config من شأنها أن تسمح بذلك. هل يمكنني بعد ذلك تسجيل وحدات ومعالجات إضافية؟ أنا فقط أستكشف الاحتمالات.

هل كانت مفيدة؟

المحلول

بدلاً من تعديل التكوين ، يمكنك تسجيل 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();
            });
        }
    }
}

انظر أيضًا منشور Phil Haack ، ثلاثة جواهر خفية مخفية في ASP.NET 4.

نصائح أخرى

يمكنك تغييره في وقت التشغيل. تم تحديد التعليمات والمخاطر المحتملة هنا: http://www.beansoftware.com/asp.net-tutorials/modify-web.config-run-time.aspx

لقد رأيت العديد من تطبيقات الويب التي تعدل التكوين أثناء عملية التثبيت أو الصيانة. (Dotnetnuke يفعل ذلك أثناء التثبيت ، ويقوم ASPDOTNETSTOREFRONT بتغيير العديد من الإعدادات كجزء من معالج التكوين.)

ولكن تذكر أنه في كل مرة تقوم فيها بتغيير الويب. سيكون من الأفضل أن تنقذ الإعدادات في قاعدة بيانات واستخدام تلك التي يمكنك. أسهل لتعديل وأقل تخريبية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top