2012-09-12 9 views
7

ठीक है तो मुझे विश्वास है कि मैं यहां कुछ आसान कर रहा हूं। मैंने एक एएसपी.नेट वेब पेज लिखा है और यह सिर्फ स्थानीय निर्देशिका में लिखने की कोशिश कर रहा है।लॉग फ़ाइल लिखने की अनुमति देने के लिए मैं अपनी एएसपी.NET निर्देशिका को कैसे कॉन्फ़िगर कर सकता हूं?

System.IO.File.WriteAllLines("log.txt", messages); 

मैं निम्नलिखित अपवाद फेंक कर रहा हूँ:

मैं निम्नलिखित कोड का उपयोग कर रहा हूँ।

Access to the path 'c:\windows\system32\inetsrv\log.txt' is denied. 

मेरा एएसपी.NET एप्लिकेशन निम्न निर्देशिका में बैठता है।

c:\inetpub\wwwroot\sites\mysite\ 

तो मैं के रूप में क्यों यह ग लिखने के लिए कोशिश कर रहा है के लिए उलझन में हूँ: \ Windows \ system32 \ inetsrv \ निर्देशिका जब मुझे लगता है कि निर्देशिका में ही आपूर्ति नहीं कर रहा हूँ।

मैंने निम्नलिखित में कोड बदलने की कोशिश की है, लेकिन यह मुझे एक नई निर्देशिका के साथ एक ही त्रुटि संदेश देता है।

System.IO.File.WriteAllLines("c:\\inetpub\\wwwroot\\sites\mysite\log.txt", messages); 

संपादित करें 1

क्योंकि हर कोई वास्तव में मुझे एक टन बाहर की मदद की यह इस पर एक जवाब स्वीकार करने के लिए मुश्किल था। मैंने tom_yes_tom का जवाब स्वीकार कर लिया क्योंकि वह अपनी प्रतिक्रिया पोस्ट करने वाले पहले व्यक्ति थे जो मेरी समस्या का पहला भाग था। मेरी समस्या का दूसरा आधा हब्रॉक के समाधान से संबंधित था जिसे फैबियो ने बताया।

+0

क्या पहचान क्या आपका एएसपी.NET एप्लिकेशन का ऐप पूल चल रहा है? – kd7

उत्तर

7

फ़ोल्डर "सी: \ inetpub \ wwwroot \ sites \ mysite \ App_Data" बनाएं और इसके बजाय वहां अपना डेटा सहेजें।

System.IO.File.WriteAllLines(Server.MapPath("~/App_Data/log.txt")) 

आप पूरी तरह mysite डायरेक्टरी में सहेज लें करना आवश्यक है, उचित रूप से वहाँ एक लॉग फ़ाइल डालने की सुरक्षा असर और सेट निर्देशिका अनुमतियों के बारे में पता होना। उपयोगकर्ता जो आईआईएस चल रहा है उसे उस निर्देशिका को पढ़ने और लिखने में सक्षम होना चाहिए।

पूर्ण योग्यता पथ: System.Web.HttpContext.Current.Server

+0

मैं इसे आजमाउंगा। – meanbunny

+0

मैंने इस दृष्टिकोण का उपयोग किया और अभी भी वही त्रुटि मिली। पथ 'सी: \ inetpub \ wwwroot \ साइटों \ mysite \ production \ App_Data \ log.txt 'को अस्वीकार कर दिया गया है – meanbunny

1

यह मदद करनी चाहिए:

पढ़ प्रदान करने के लिए, लिखते हैं, और एक विशिष्ट फ़ाइल

Windows Explorer में करने के लिए अनुमतियों को संशोधित, पता लगाने और आवश्यक फ़ाइल का चयन करें।

फ़ाइल पर राइट-क्लिक करें, और उसके बाद गुणक्लिक करें।

गुण संवाद बॉक्स में, सुरक्षा टैब पर क्लिक करें।

सुरक्षा टैब पर, उपयोगकर्ताओं की सूची की जांच करें। यदि नेटवर्क सेवा खाता सूचीबद्ध नहीं है, तो इसे जोड़ें।

गुण संवाद बॉक्स में, नेटवर्क सेवा उपयोगकर्ता नाम पर क्लिक करें, और नेटवर्क सेवा अनुभाग के लिए अनुमतियों में, पढ़ें, लिखें, और संशोधनों को संशोधित करें का चयन करें।

क्लिक करें लागू करें, और उसके बाद से ठीक

जानकारी: से इनकार किया है: http://msdn.microsoft.com/en-us/library/ff647402.aspx#paght000015_fileaccess

+0

मुझे यह सुरक्षा समस्या भी थी। मेरा पहला प्रयास अंतरिक्ष के बिना नेटवर्क सेवा को जोड़ना था और यह एक सुरक्षा वस्तु को पहचान नहीं पाया था, इसलिए मैंने उस दृष्टिकोण को छोड़ दिया, लेकिन जैसा कि @ फैबियो गौव ने बताया कि उसे एक जगह की आवश्यकता है। – meanbunny

3

आप "पथ तक पहुंच '\ Windows \ system32 \ inetsrv \ log.txt सी' प्राप्त कर रहे हैं।"जब आप System.IO.File.WriteAllLines (" log.txt ", संदेश) निष्पादित करते हैं क्योंकि c: \ windows \ system32 \ inetsrv निर्देशिका है जहां IIS निष्पादन योग्य स्थित है (w3wp.exe)।

आपके पास है Server.MapPath उपयोग करने के लिए तो यह है कि आप अपने वर्चुअल निर्देशिका के भौतिक पथ देता है।

देखो जो उपयोगकर्ता अपने वर्चुअल निर्देशिका के एप्लिकेशन पूल चलाने, और उसे अपने वर्चुअल निर्देशिका के फ़ोल्डर पर अनुमतियों लिख दे।

+0

ठीक है इसलिए मैंने एप्लिकेशन पूल को देखा और यह इसकी पहचान-> नेटवर्क सेवा प्रदान करता है। नेटवर्क सेवा वास्तविक साइट निर्देशिका के लिए अनुमति सूची पर नहीं है। – meanbunny

+0

नेटवर्क्स सेवा – Fabio

+0

के लिए अपने फ़ोल्डर पर लिखने की अनुमति देने के लिए @ hbrock के निर्देशों का पालन करें ठीक है, मैं इसे फिर से करने जा रहा हूं। मैंने अंतरिक्ष के बिना नेटवर्क सेवा करने का प्रयास किया था ताकि शायद मेरी समस्या हो। – meanbunny

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

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