2011-06-28 14 views
8

में एक एएसपी.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 प्रारंभ और रूट ऐप शुरू हो रहा है।

उत्तर

1

अगर मुझे लगता है कि आपकी साइट पर कुछ ऐसा है जो web.config फ़ाइलों, dlls, aspx, asmx या किसी अन्य फ़ाइल को बदल रहा है। जब भी वे फाइलें बदली जाती हैं तो वेब एप्लिकेशन का एक नया उदाहरण शुरू हो जाता है और नए एप्लिकेशन से नए अनुरोधों को पूरा किया जाता है, जबकि पुराने अनुरोध मौजूदा एप्लिकेशन से परोसे जाते हैं। एक बार पुराने अनुरोधों को पूरा करने के बाद पुराना आवेदन बंद हो जाता है। यह तैनाती के लिए अच्छा है क्योंकि यह मौजूदा सत्रों को तोड़ नहीं देता है, लेकिन इसका मतलब है कि आपके पास ऐसा कुछ भी नहीं होना चाहिए जो प्रत्येक अनुरोध या उस तरह की चीज़ों पर स्वचालित रूप से web.config फ़ाइलों को बदल रहा हो।

यह पृष्ठ काफी बेहतर विस्तार यह कैसे काम करता http://technet.microsoft.com/en-us/library/cc759560(WS.10).aspx

2

आप गलती से 2 AppPool गुण (प्रदर्शन टैब) में कार्यकर्ता प्रक्रियाओं की संख्या में निर्धारित किया था में वर्णन करता है?

उन गुणों में, ऐसी सेटिंग भी हो सकती है जो आपके ऐपपूल रीसायकल को अक्सर संख्या या अनुरोधों या उन रीसाइक्लिंग सेटिंग्स के आधार पर रीसायकल करने दें,

संबंधित मुद्दे