में एक एएसपी.NET ऐप (गलती से) मैं एक एएसपी.NET एप्लिकेशन डिबग कर रहा हूं जो कुछ स्थैतिक क्षेत्रों की सामग्री को यादृच्छिक रूप से खो रहा है। मैंने कुछ सरल कस्टम लॉगिंग किया (क्योंकि लॉग 4नेट भी flaky था), और पता चला कि आवेदन दो ऐप डोमेन में लोड किया जा रहा है।एकाधिक एप डोमेन या अक्सर ऐप रीसीसिंग
6/27/2011 9:01:01 PM /LM/W3SVC/1/ROOT/MyApp-1-129537072581658334: log message 1
6/27/2011 9:01:01 PM /LM/W3SVC/1/ROOT/MyApp-1-129537072581658334: log message 2
6/27/2011 9:01:01 PM /LM/W3SVC/1/ROOT/MyApp-1-129537072581658334: log message 3
6/27/2011 9:01:01 PM /LM/W3SVC/1/ROOT/MyApp-1-129537072581658334: log message 4
6/27/2011 9:01:02 PM /LM/W3SVC/1/ROOT/MyApp-4-129537072620628334: log message 5 <-
6/27/2011 9:01:02 PM /LM/W3SVC/1/ROOT/MyApp-4-129537072620628334: log message 6
6/27/2011 9:04:50 PM /LM/W3SVC/1/ROOT/MyApp-1-129537074647228334: log message 7
6/27/2011 9:04:50 PM /LM/W3SVC/1/ROOT/MyApp-1-129537074647228334: log message 8
आइटम के बाद समय/दिनांक वर्तमान एप्लिकेशन डोमेन नाम है: यहाँ लॉग से एक टुकड़ा है।
एप्लिकेशन केवल एक नियमित एएसपी.नेट (एमवीसी नहीं) एप्लिकेशन है जो कुछ AJAX अनुरोध को संभालने और उन्हें एएसपी.नेट पुस्तकालयों के समूह में गुजर रहा है। एकमात्र असामान्य बात यह है कि पुस्तकालयों में से एक कुछ वर्गों को देखने के लिए थोड़ा प्रतिबिंब का उपयोग करता है जो तत्काल थिएटर पर तुरंत चलाता है और चलाता है। लेकिन यह ऐप डोमेन के साथ स्पष्ट रूप से कुछ भी नहीं करता है।
वैसे, लॉग फ़ाइल से हाइलाइट की गई पंक्ति एएसपीएक्स हैंडलर से एएसपी.NET ऐप (यानी उन अलग थ्रेड में से एक नहीं) से आती है।
क्या मैं सही ढंग से लॉग की व्याख्या कर रहा हूं? यदि हां, तो एकाधिक ऐप डोमेन से एप्लिकेशन को लोड और सेवा करने का कारण क्या हो सकता है?
संपादित करें: यह प्रश्न अनिवार्य रूप से इस से संबंधित है: ASP.NET Application state vs a Static object। हालांकि, आज मैंने जो देखा है उसके आधार पर, स्थिर क्षेत्रों पर भरोसा करना संभव नहीं लगता है। मैं सबकुछ एप्लिकेशन ऑब्जेक्ट में ले जा सकता हूं, लेकिन मुझे लगता है कि एक सिंक्रनाइज़ेशन थोड़ा बोझिल होगा। मैं अधिक से अधिक आश्वस्त हूं कि आवेदन कुछ गैर-मानक करता है।
संपादित करें 2: मैंने थोड़ा और जांच की, और ऐसा लगता है कि एप्लिकेशन और ऐप डोमेन (जो मुझे उम्मीद है) के बीच हमेशा 1-1 संबंध होता है। तो मुझे लगता है कि जो मैं देख रहा हूं वह रीसाइक्लिंग है।
संपादित करें 3: कुछ और प्रयोगों के बाद और आसपास poking, मैं सक्षम आईआईएस स्वास्थ्य की निगरानी (http://blogs.msdn.com/b/tess/archive/2006/08/02/asp-net-case-study-lost-session-variables-and-appdomain-recycles.aspx के आधार पर), और पता चला कि आवेदन के लिए एक त्वरित उत्तराधिकार में दो बार शुरू कर दिया है। यह वास्तव में काफी परेशान है। यहां लॉग इवेंट हैं:
Event code: 1003
Event message: Application compilation is starting.
Event time: 6/28/2011 8:34:31 AM
Event time (UTC): 6/28/2011 3:34:31 PM
Event ID: d42336b18c264516a4ba5aa1e62df276
Event sequence: 1
Event occurrence: 1
Event detail code: 0
Application information:
Application domain: /LM/W3SVC/1/ROOT/MyApp-1-129537488697736549
Trust level: Full
Application Virtual Path: /MyApp
Application Path: [snip]\MyApp\
Machine name: US-SEA-R9759B2
Process information:
Process ID: 7624
Process name: w3wp.exe
Account name: IIS APPPOOL\DefaultAppPool
----
Event code: 1001
Event message: Application is starting.
Event time: 6/28/2011 8:34:33 AM
Event time (UTC): 6/28/2011 3:34:33 PM
Event ID: f7fbecb1ba1a4a24833016cec47458c6
Event sequence: 1
Event occurrence: 1
Event detail code: 0
Application information:
Application domain: /LM/W3SVC/1/ROOT-2-129537488729428362
Trust level: Full
Application Virtual Path:/
Application Path: [snip]\RootApp\
Machine name: US-SEA-R9759B2
Process information:
Process ID: 7624
Process name: w3wp.exe
Account name: IIS APPPOOL\DefaultAppPool
----
Event code: 1001
Event message: Application is starting.
Event time: 6/28/2011 8:34:40 AM
Event time (UTC): 6/28/2011 3:34:40 PM
Event ID: 07a3dc31e8804caca1ddc3b2101962e3
Event sequence: 1
Event occurrence: 1
Event detail code: 0
Application information:
Application domain: /LM/W3SVC/1/ROOT-3-129537488807712839
Trust level: Full
Application Virtual Path:/
Application Path: [snip]\RootApp\
Machine name: US-SEA-R9759B2
Process information:
Process ID: 7624
Process name: w3wp.exe
Account name: IIS APPPOOL\DefaultAppPool
----
Event code: 1001
Event message: Application is starting.
Event time: 6/28/2011 8:34:40 AM
Event time (UTC): 6/28/2011 3:34:40 PM
Event ID: db304b519a084fa797fbcfe66fbb0b48
Event sequence: 1
Event occurrence: 1
Event detail code: 0
Application information:
Application domain: /LM/W3SVC/1/ROOT/MyApp-4-129537488808502885
Trust level: Full
Application Virtual Path: /MyApp
Application Path: [snip]\MyApp\
Machine name: US-SEA-R9759B2
Process information:
Process ID: 7624
Process name: w3wp.exe
Account name: IIS APPPOOL\DefaultAppPool
MyApp एप्लिकेशन किसी अन्य एप्लिकेशन (रूट ऐप) में बैठता है। मैं जो अपेक्षा करता हूं वह दो लॉग संदेश होंगे: MyApp प्रारंभ और रूट ऐप शुरू हो रहा है।