هل هناك أي طريقة برمجيا تعيين اسم التطبيق في Elmah?

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

  •  03-07-2019
  •  | 
  •  

سؤال

أنا بحاجة إلى تغيير اسم التطبيق بناء على ما التكوين أنا باستخدام Visual Studio.على سبيل المثال, إذا أنا في تكوين التصحيح, أريد اسم التطبيق كما تظهر 'App_Debug' في التطبيق الميداني في Elmah_Error الجدول.هل من أحد لديه أي خبرة مع هذا ؟ أو أن هناك طريقة أخرى للقيام بذلك ؟

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

المحلول

بشكل افتراضي ، Elmah يستخدم AppPool طلب المعرف الفريد العمومي الافتراضي اسم التطبيق.ويستخدم هذا المفتاح لتحديد الأخطاء في Elmah_Error الجدول عندما تنظر إلى واجهة ويب التي يتم إنشاؤها من خلال HTTP وحدة.

كنت في مهمة لاستكشاف هذا الخيار الشركة في وقت سابق من هذا العام.لم أتمكن من العثور على طريقة التعامل مع هذا بشكل افتراضي منذ Elmah يسحب اسم التطبيق من HttpRuntime.AppDomainAppId في ErrorLog.cs الملف.هل يمكن التلاعب به من قبل أي مفتاح تريد ؛ ومع ذلك, هذا هو AppPool GUID.

وقال مع ذلك, كنت قادرا على التعامل مع ErrorLog.cs ملف لتحويل Elmah في للاستدعاء إطار بدلا من معالج على أساس واحد و تسمح لي أن أضع اسم التطبيق.ما انتهى به تم تعديل ErrorLog.cs لتشمل الملكية التي سمحت لي أن تعيين اسم على النحو التالي:

public virtual string ApplicationName
{
    get 
    {
        if (_applicationName == null) {  _applicationName = HttpRuntime.AppDomainAppId; }
        return _applicationName;
    }
    set { _applicationName = value; }
}

ما وربما كنت سوف تحتاج إلى القيام به هو ضبط هذا بشكل مختلف و تعيين اسم التطبيق لا HttpRuntime.AppDomainAppId ولكن بدلا من ذلك قيمة سحبها من شبكة الإنترنت.config.كل هذا ممكن.الطريقة التي فعلت ذلك تعزيز ErrorLog.Log(ex) الطريقة حتى أتمكن من استخدام Elmah لديه للاستدعاء إطار أبعد من تطبيقات الويب.إذا نظرنا إلى الوراء أتمنى ذلك التطبيق على شبكة الإنترنت/.التكوين النهج بدلا من ذلك.

شيء واحد أن نأخذ في الاعتبار عند تغيير اسم التطبيق في Elmah.معالج http أن يولد /elmah/default.aspx واجهة لم تعد تعمل.أنا لا تزال تحاول أن تجد الوقت دائرة حول العودة إلى مثل هذا ، ومع ذلك ، قد تحتاج إلى النظر في خلق واجهة مخصصة عند تنفيذ.

نصائح أخرى

هذا يمكن القيام به الآن بحتة في العلامات.فقط إضافة applicationName تنسب إلى errorLog عنصر في <elmah> قسم من شبكة الإنترنت.ملف التكوين.على سبيل المثال:

<errorLog type="Elmah.SqlErrorLog, Elmah" 
    connectionStringName="connectionString" applicationName="myApp"  />

لقد اختبرت هذا ويعمل كل من عند تسجيل استثناء عند عرض سجل عن طريق Elmah.axd.

في حالة الجراحة ، يمكن لأحد أن يتصور أنه يمكن تعيين برمجيا جدا ولكن لم أكن اختبار.بالنسبة لي وأنا أتخيل بالنسبة لمعظم سيناريوهات العلامات النهج كافية.

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