14

के साथ वेब एपीआई प्रोजेक्ट को तैनात करते समय बिल्ड सर्वर पर "एक्सेस अस्वीकार कर दी गई है" मेरे वेब एपीआई प्रोजेक्ट के लिए वेब एपीआई हेल्प पेज का उपयोग करके एक्सएमएल दस्तावेज जेनरेट करने के लिए, मुझे "एक्सएमएल दस्तावेज फाइल" विकल्प को " मेरे प्रोजेक्ट के गुणों का खंड "बनाता है। जब मैं स्थानीय रूप से निर्माण करता हूं तो यह सही ढंग से प्रलेखन उत्पन्न करता है।एक्सएमएल प्रलेखन

हालांकि, जब मैं में जाँच, मैं निम्न त्रुटि बिल्ड सर्वर पर मिलता है:

सीएससी: त्रुटि पैदा एक्सएमएल फ़ाइल प्रलेखन 'c: \ बनाता है \ 3 ... \ सूत्रों का कहना है \ CurrentVersion। .. \ ProjectName \ App_Data \ XmlDocument.xml ' (' प्रवेश निषेध है। ')

मैं ऐसा क्यों होता है यकीन नहीं है, क्योंकि यह प्रत्येक वैसे भी निर्माण के लिए एक नया निर्देशिका बनाता है। मैंने इस मुद्दे को गुमराह किया और स्टैक ओवरफ़्लो की खोज की, लेकिन मुझे मिला एकमात्र समाधान XML दस्तावेज़ फ़ाइल को निकालना था (जो वेब एपीआई सहायता पृष्ठों का उपयोग करने के उद्देश्य को हरा देता है)। मैं इसे कैसे हल करूं?

+0

के लिए फिर से जेनरेट किया गया है क्या आपके पास "ProjectName \ App_Data \ XmlDocument.xml" फ़ाइल TFS में चेक-इन है?और क्या आप प्रत्येक निर्माण के लिए फ़ाइल को ओवरराइट करने का प्रयास कर रहे हैं? – Isaiah4110

+0

हां, फ़ाइल की जांच की गई है। मैं चाहता हूं कि फ़ाइल प्रत्येक बिल्ड के साथ ड्रॉप फ़ोल्डर में कॉपी हो जाएगी, लेकिन मुझे लगता है कि प्रत्येक बिल्ड के लिए एक नया ड्रॉप फ़ोल्डर बनाया गया है, इसलिए मुझे ओवरराइट होने की आवश्यकता नहीं होगी। – mayabelle

उत्तर

17

यदि एक्सएमएल फ़ाइल टीएफएस में चेक-इन की जाती है तो जब टीएफएस को बिल्ड सर्वर पर वर्कस्पेस में फ़ाइलें मिलती हैं, तो इसमें फ़ाइल से जुड़े "केवल-पढ़ने योग्य विशेषता" होगी। अब जब बिल्ड नई एक्सएमएल फ़ाइल उत्पन्न करता है, तो यह पुरानी एक्सएमएल फाइल को ओवरराइट करने में सक्षम नहीं होगा क्योंकि इसमें केवल-पढ़ने योग्य विशेषता है।

समाधान के लिए है: क) अपने निर्माण स्क्रिप्ट का उपयोग फ़ाइल गुण संशोधित करने के लिए और इसे पढ़-लिख ख) एक्सएमएल चेक-इन किया TFS करने के लिए फ़ाइल को हटा दें ताकि, निर्माण आसानी से एक्सएमएल उत्पन्न करने में सक्षम हो जाएगा ।

अद्यतन: यदि आप समाधान बी का उपयोग कर रहे हैं, यदि फ़ाइल आपके प्रोजेक्ट फ़ाइल का हिस्सा है, तो सुनिश्चित करें कि आप फ़ाइल को csproj फ़ाइल से भी हटा दें।

+0

आज भी इस मुद्दे पर था, भले ही मैंने उस परियोजना पर काम किया और कुछ हफ्ते पहले प्रकाशित किया। –

5

स्रोत नियंत्रण से फ़ाइल को निकालने से यह मेरे लिए ठीक नहीं हुआ, टीम सर्वर अभी भी इसे एक्सेस करने का प्रयास कर रहा था।

मैं बिल्ड परिभाषा में क्लॉकिंग App_Data द्वारा इसे हल करने में सक्षम था।

+0

टीएफएस 2015 पर काम करता है। धन्यवाद। – Steven

0

भले ही आप प्रत्येक निर्माण के लिए एक नई निर्देशिका बना रहे हैं, यह निर्देशिका केवल निर्माण आउटपुट के लिए है। बिल्ड वास्तव में उस निर्देशिका में नहीं होता है, यह सर्वर के tfs वर्कस्पेस में होता है और बिल्ड आउटपुट को नई निर्देशिका में कॉपी किया जाता है। एक्सेस से इनकार किया गया त्रुटि चेक इन फ़ाइल को केवल तभी पढ़ा जा रहा है जब बिल्ड सर्वर कार्य स्थान पर tfs द्वारा एक्सेस किया जाता है और इसलिए फ़ाइल को निर्माण के दौरान \ n ओवरराइट नहीं किया जा सकता है।

मुझे इस समस्या के आसपास बिन फ़ोल्डर में अपना एक्सएमएल दस्तावेज आउटपुट पथ बदलकर मिला।

तो परियोजना> बनाएँ -> आउटपुट आउटपुट पथ: बिन \ एक्सएमएल फ़ाइल प्रलेखन: bin/XmlDocument.xml

मैं तुम्हें अपने निर्माण विन्यास (परियोजना के सभी के लिए ऐसा करते हैं सुझाव है -> निर्माण, विन्यास ड्रॉप डाउन मेनू -> सभी विन्यास का चयन करें)

फिर

परियोजना के तहत -> क्षेत्रों/HelpPage/App_Start/HelpPageConfig.cs config.SetDocumentationProvider बदलने मैप करने के लिए "~/bin/XmlDocument.xml"

नहीं करना स्रोत नियंत्रण से XmlDocument.xml फ़ाइल को तब से निकालना भूल जाओ यह प्रत्येक बिल्ड

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