Classic ASP Server.MapPath() doesn't work as expected in global.asa -


क्लासिक एएसपी में, Server.MapPath () हमेशा global.asa के अंतर्गत> अनुप्रयोग_ऑनस्टार्ट ईवेंट मेरे पास वर्चुअल रूट के अंदर "\ testfolder \ test.asp" पर एएसपी पृष्ठ है, मेरे पास "\ xsl \ transform.xsl" पर एक XSLT फ़ाइल है। मेरा वर्चुअल रूट "c: \ inetpub \ wwwroot \ testapp \" में स्थित है।

मैं मानचित्रपैथ एएसपी पृष्ठ के भीतर का उपयोग करने के लिए पूर्ण XSLT फ़ाइल के लिए पथ कॉल:

  sXslPath = Server.MapPath ("xsl \ transform.xsl")  

कुछ बार मैपपैथ "c: \" अपेक्षित के रूप में inetpub \ wwwroot \ testapp \ xsl \ transform.xsl ", दूसरी बार यह गलत तरीके से " c: \ inetpub \ wwwroot \ testapp \ testfolder \ xsl \ transform \ XSL "। गलत पथ स्पष्ट रूप से गंभीर समस्याएं पैदा करता है।

मैं यहां अपने प्रश्न का उत्तर दे रहा हूं:

यह समस्या तब होती है क्योंकि जब Application_OnStart में बुलाया जाता है, मानचित्रपैथ गलत तरीके से उस पृष्ठ के संदर्भ को शामिल करता है जिसने एप्लिकेशन को स्टार्टअप के कारण किया था यदि पहले एएसपी पृष्ठ चलाने के लिए जब आवेदन अभी तक शुरू नहीं किया गया है वर्चुअल रूट की जड़ में नहीं है तो मानचित्रपैथ भ्रमित हो जाता है और पथ को वापस आने वाले रास्ते में एएसपी पृष्ठ को जोड़ देता है ।

उदाहरण के लिए, यदि ऐप शुरू कर दिया गया पृष्ठ "c: \ inetpub \ wwwroot \ testapp \ folder1 \ folder2 \ test.asp" था, तो मानचित्रपथ गलत तरीके से जोड़ देगा पथ के मध्य में "\ folder1 \ folder2" और "c: \ inetpub \ wwwroot \ testapp \ folder1 \ folder2 \ xsl \ transform.xsl"

यदि आपकी वेबसाइट में केवल रूट फ़ोल्डर में फाइल है या MapPath का उपयोग global.asa में नहीं है तो आप इस छोटे विषमता को कभी भी ध्यान नहीं देंगे। मुझे संदेह है कि वहां बहुत से एएसपी क्लासिक साइटें हैं, जो इस समय की वजह से ठीक से शुरू करने में असफल हैं, लेकिन उनके मालिक सिर्फ एक त्वरित iisreset करते हैं, यह जानने के बावजूद कि क्या गलत हो गया है।

इसका नतीजा यह है कि आप मैपपैथ में global.asa में मज़बूती से उपयोग नहीं कर सकते हैं, अगर आपके पास एक वेबसाइट है जिसकी एएसपी फाइलें सिर्फ रूट फ़ोल्डर के अलावा कहीं भी है।

यदि यह एक एकमात्र वेबसाइट है तो सबसे आसान समाधान केवल कठिन कोड के लिए है जिसे आप global.asa में उपयोग करते हैं।

यदि आप एएसपी के आधार पर अन्य लोगों को उत्पाद बेचते हैं शास्त्रीय तो पथ को मुश्किल कोडिंग एक विकल्प नहीं है। आपको या तो एप्लिकेशन स्टार्टअप से बाहर MapPath के सभी उपयोगों को स्थानांतरित करने या इंस्टॉलर के हिस्से के रूप में अपनी एएसपी फ़ाइलों में पथ लिखकर समस्या से निपटना होगा।


Comments