2011-03-13 11 views
6

मैंने अपने नियंत्रक पर एक विधि लिखी है जो ऑटो मेरे क्लाइंट के लिए एक पावरपॉइंट डेक उत्पन्न करता है और जो ठीक काम करता है ... सिवाय इसके कि मैं डिस्क पर फ़ाइल को सहेजने के बारे में कुछ हिस्सों पर फंस गया हूं।मुझे अभी भी "पथ तक पहुंच" क्यों मिल रही है: ... ... 'अस्वीकार कर दिया गया है "निर्देशिका में IIS_IUSRS लिखने की अनुमति देने के बाद भी?

मैं इस अवधारणा के लिए कोई अजनबी नहीं हूं; और "सोचा" कि मुझे बस इतना करना है कि IIS_IUSRS निर्देशिका पर अनुमति दें और सभी मूल निर्देशिकाओं पर अनुमति पढ़ें। मैं आईआईएस 7 का उपयोग कर रहा हूं, और मैंने आईआईएस 6 के साथ नेटवर्क्स सेवा को एक ही अनुमति देने के साथ पहले यह किया है।

बस किक्स के लिए, मैंने निर्देशिका पर हर किसी को लिखने की अनुमति भी दी और मैं अभी भी अपवाद प्राप्त कर रहा हूं: सिस्टम। अनधिकृत एक्सेस अपवाद: पथ 'सी: ...... \ सामग्री \ पीपीटी' तक पहुंच अस्वीकार कर दी गई है। (मैंने सादगी के लिए कुछ पथ हटा दिया)।

क्या कोई और चीज़ है जो मैं देख रहा हूं? जिस सर्वर पर यह है, वह पहला है जिसे मैंने स्थापित किया है, इसलिए मैंने कुछ अनदेखा कर दिया होगा?

यहाँ मेरी नियंत्रक विधि को सरल बनाया है:

public ActionResult CreatePowerPoint() 
    { 
     string path = HttpContext.Server.MapPath("~/Content/PPT"); 

     Aspose.Slides.Presentation presentation = new Aspose.Slides.Presentation(); 
     CreatePresentation(presentation); 

     presentation.Save(path, Aspose.Slides.Export.SaveFormat.Ppt); 

     return View(); 
    } 
} 

presentation.Save() विधि एक रास्ता लेता है और एक प्रारूप को बचाने ... मैं और क्या करने की कोशिश करना नहीं पता ... वहाँ कुछ गड़बड़ है मेरे कोड के साथ? क्या मैं गलत तरीके से पथ बना रहा हूं? मैं सहेजने की विधि में स्ट्रीम स्ट्रीम भी पास कर सकता हूं, लेकिन मुझे यकीन नहीं है कि इससे समस्या ठीक हो जाएगी या नहीं।

+1

आपके द्वारा सुविधा के लिए छोड़े जाने वाले पथ का हिस्सा एक अंतर डाल सकता है। आपको यह दिखाने की ज़रूरत है कि निर्देशिका पेड़ में आप फ़ाइल को सहेजने की कोशिश कर रहे हैं; कुछ संस्करणों में विंडोज गैर-प्रशासनिक उपयोगकर्ताओं को यूएसी के हिस्से के रूप में कुछ फ़ोल्डरों को लिखने की अनुमति नहीं देता है। निर्देशिका को दिखाए बिना "मैं इस निर्देशिका में सहेज नहीं सकता" सवाल बहुत अप्रत्याशित बनाता है। –

+1

या आप iIS_IUSERS या सभी को अनुमति देने के बजाय किसी उपयोगकर्ता का प्रतिरूपण करने का प्रयास कर सकते हैं। मुझे लगता है कि इसे गैर-प्रशासनिक उपयोगकर्ताओं से सभी फ़ोल्डरों तक पहुंचने की अनुमति नहीं है और यह समस्याएं पैदा कर रहा है। जाने का उचित तरीका प्रतिरूपण है। – Tayyab

+0

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

उत्तर

18

मुझे समाधान मिला - मैं आईआईएस 7 का उपयोग कर रहा हूं, और मेरे पास एप्लिकेशन पहचान गलत पहचान पर सेट है। आईआईएस 7 में, मैंने बस अपने ऐप पर चल रहे एप्लिकेशन पूल की पहचान बदल दी और सब कुछ काम किया। मैंने अपनी पहचान के रूप में नेटवर्क सेवा का उपयोग किया।

इसके अलावा Aspose स्लाइड का उपयोग करने वालों के लिए, मुझे यह भी सुनिश्चित करना था कि फ़ाइल का नाम पथ में था।

+0

धन्यवाद! मैं पिछले तीन घंटों तक उस पर अटक गया हूं जब तक कि मैं आपकी पोस्ट नहीं पढ़ता। – GrandMasterFlush

+0

आईआईएस ऐप पूल उन्नत सेटिंग्स में नेटवर्क सेवा या नेटवर्क सेवा? – guiomie

3

एप्लिकेशन पूल पहचान को "नेटवर्क सेवा" पर सेट किया जाना चाहिए (एक वैध उपयोगकर्ता का उदाहरण जो आप सेवा चलाने के लिए उपयोग कर सकते हैं)। लेकिन आपको आईआईएस एडमिन प्रमाणीकरण \ अनाम प्रमाणीकरण सक्षम और "एप्लिकेशन पूल पहचान" के लिए अनाम उपयोगकर्ता पहचान में भी सेट करना होगा। इसके बिना मैं अभी भी फाइल अपलोड पर अपवादों से वंचित पहुंच प्राप्त कर रहा था।

3

मैं इस मुद्दे में भाग गया, लेकिन यह वास्तव में था क्योंकि फ़ाइलों को एनटीएफएस एफएस में केवल पढ़ने के रूप में चिह्नित किया गया था।

मेरे मामले में, यह new FileStream(path, FileMode.Open) था जो असफल रहा था, और File.Open(path, FileMode.Open, FileAccess.Read, FileShare.Read) के साथ इसे बदलकर आसानी से ठीक किया गया था।

नीचे की रेखा, भले ही फ़ाइल पठनीय हो, बस FileMode.Open निर्दिष्ट करना FileAccess.ReadWrite में डिफ़ॉल्ट रूप से प्रतीत होता है।

0

मुझे एक ही समस्या थी, समस्या यह थी कि मैंने को दिए गए फ़ोल्डर के गुणों पर केवल पढ़ने के लिए चेकबॉक्स को हटा दिया था।

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

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