2010-06-11 19 views
6

मुझे अपने आप को ASP.NET वेब अनुप्रयोग के भौतिक स्थान के सापेक्ष फ़ाइल के आधार पर log4net को कॉन्फ़िगर करने की आवश्यकता है। हम जितनी जल्दी हो सके लॉगर शुरू करना चाहते हैं, इसलिए Application_Start एक उचित जगह लगता है। IIS6 में, यह ठीक काम करता है और उम्र के लिए चल रहा है, लेकिन अब हम IIS7 में ले जाया गया और यह अब और काम नहीं करेगा:HttpContext.Current का उपयोग किये बिना एएसपी.NET वेब एप्लिकेशन का भौतिक स्थान कैसे प्राप्त करें?

string absolutePath = HttpContext.Current.Request.PhysicalApplicationPath; 

क्योंकि HttpContext.Current कई global.asax (अनुप्रयोग, सत्र) में उपलब्ध नहीं है आयोजन। यह पुरानी खबर है, हम सभी जानते हैं कि यह अब कुख्यात Request is not available in this context error उठाता है। हम वापस क्लासिक मोड में नहीं जाना चाहते हैं।

अब सवाल सरल है: HttpContext का उपयोग किए बिना, क्या वर्तमान में चल रहे वेब एप्लिकेशन इंस्टेंस का भौतिक स्थान खोजना संभव है?

+1

क्या यह मदद करेगा? - http://stackoverflow.com/questions/1740422/asp-net-current-physical-location –

+0

हाँ, यह मदद करता है, धन्यवाद! – Abel

उत्तर

14

HttpRuntime.AppDomainAppPath आज़माएं। अधिक जानकारी के लिए, माइक वोल्डार्स्की द्वारा पोस्ट IIS7 Integrated mode: Request is not available in this context exception in Application_Start पढ़ें।

+0

यही माइकल स्वेन्सन ने लिखा था। जाहिर है, मैंने अपना खुद का लिंक अच्छी तरह से नहीं पढ़ा, तुम्हारा और मेरा वही है, lol। बस परीक्षण किया, एक आकर्षण की तरह काम करता है :) – Abel

0

मेरे अपने प्रश्न के वैकल्पिक उत्तर के रूप में, मैं Server.MapPath()Application_Start ईवेंट के दौरान भी काम करना चाहता हूं। एप्लिकेशन डोमेन पथ तब Server.MapPath("~") के बराबर होगा, लेकिन यह सापेक्ष पथ मैपिंग के लिए आसान है, concatenation के बोझ को हटा रहा है (क्या MapPath के साथ शुरू करने के लिए मतलब था)।

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

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