عندما طريقة AppInitialize الحصول على الاحتجاج في ASP.NET؟

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

  •  11-07-2019
  •  | 
  •  

سؤال

وخلال ممارسة تخصيص VirtualPathProvider ل، وجدت أنه من VirtualPathProvider لوالعرف ويمكن تسجيلها في Global.asax أو في طريقة AppInitialize وفقا لMSDN <لأ href = "http://msdn.microsoft.com/en-us/library /system.web.hosting.virtualpathprovider.aspx "يختلط =" noreferrer "> http://msdn.microsoft.com/en-us/library/system.web.hosting.virtualpathprovider.aspx . ومع ذلك، MSDN لا تصف بوضوح طريقة AppInitialize.

هل هناك أي طريقة AppInitialize ثابت في مجلد App_code سيتم استدعاؤه تلقائيا بواسطة وقت التشغيل ASP.NET في البدء؟

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

المحلول

ولئن كان هناك قلة الوثائق الثمينة حول أسلوب AppInitialize ()، كنت على صواب في توليكم أن أي فئة في مجلد App_Code الذي يحتوي على توقيع الأسلوب كما يلي:

public static void AppInitialize()

وسيتم استدعاؤه عند بدء تشغيل التطبيق Asp.Net تصل. تذكر أن App_Code هو مجلد خاص لAsp.Net وكل شيء داخل هناك يعامل بشكل مختلف قليلا. حظا سعيدا العثور على وثائق عن كل المراوغات قليلا (مثل ما سبق ذكره) من المجلد App_Code.

وشيء آخر أن نتذكر مع ذلك هو أن فئة واحدة فقط يمكن أن تحتوي على التوقيع للأسلوب AppInitialize () أو أنك سوف تحصل على الخطأ البرمجي في وقت التشغيل مشابهة لهذه:

<اقتباس فقرة>   

ويتم تعريف طريقة AppInitialize   سواء في "App_Code.SomeClassOne" وفي   "App_Code.SomeClassTwo".

وهكذا في حين أن هذا غير صحيح تماما:

public class SomeClassOne
{
    public static void AppInitialize()
    {
        HostingEnvironment.Cache["InitializationTimeOne"] = DateTime.Now;
    } 
}

وهذا سوف يولد الخطأ مترجم ذكرتها أعلاه:

public class SomeClassOne
{
    public static void AppInitialize()
    {
        HostingEnvironment.Cache["InitializationTimeOne"] = DateTime.Now;
    } 
}

public class SomeClassTwo
{
    public static void AppInitialize()
    {
        HostingEnvironment.Cache["InitializationTimeTwo"] = DateTime.Now;
    } 
}

وآمل أن يكون هذا يمهد الامور قليلا بالنسبة لك:)

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