/ / IIS8 से एक cmd फ़ाइल निष्पादित करें - c #, iis-8

आईआईएस 8 - सी #, आईआईएस -8 से एक cmd फ़ाइल निष्पादित करें

मेरे पास कोड का एक टुकड़ा है जो कुछ इनबिल्ट फ़ंक्शंस के साथ एक्सेल उत्पन्न करता है

string xmlfilePath = "C:\Test\standard_xml.xml";
string script = "C:\Test\script.vbs";
string template = "Template";
string cmdfilePath = @"C:\Test\executable.cmd";
if (File.Exists(cmdfilePath))
{
File.Delete(cmdfilePath);
}

using (FileStream fs = File.Create(cmdfilePath))
{
Byte[] info = new UTF8Encoding(true).GetBytes(""" + script + """ + " " +
""" + template + """ + " "" + xmlfilePath + """);
fs.Write(info, 0, info.Length);
}
var process = Process.Start(cmdfilePath);
process.WaitForExit();

यह कोड एक एक्सेल बनाता है और कुछ आवश्यक संचालन करता है।

विजुअल स्टूडियो में परीक्षण के दौरान यह बहुत अच्छा काम करता है, लेकिन जब मैं इसे iis8 पर चलाता हूं तो यह कभी काम नहीं करता। मैंने उन सभी विभिन्न समाधानों की कोशिश की है जिनका उल्लेख वेब पर कुछ भी नहीं किया गया है।

किसी भी मदद की सराहना की है।

उत्तर:

जवाब के लिए 0 № 1

सुनिश्चित करने के लिए जानने के बिना (कुछ त्रुटि लॉग के माध्यम से, Eventvwr स्क्रीनशॉट), मेरा अनुमान है कि आप "एक अनुमति समस्या में चल रहे हैं।

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

मैं AppPool उपयोगकर्ता पहचान को अंतर्निहित "ApplicationPoolIdentity" में छोड़ने का सुझाव दूंगा, क्योंकि यह सबसे सुरक्षित विकल्प है।

MSDN पर इस विषय पर बहुत सारी अच्छी जानकारी है: https://docs.microsoft.com/en-us/iis/manage/configuring-security/application-pool-identities

फ़ाइल अनुमतियाँ जोड़ने के लिए विशेष रूप से सुरक्षित संसाधन भाग को देखें: https://docs.microsoft.com/en-us/iis/manage/configuring-security/application-pool-identities#securing-resources

अन्य परिदृश्य हैं जहां आप ओवरराइड कर सकते हैंउपयोगकर्ता किसी दिए गए AppPool के लिए खाता है, और यहां तक ​​कि वेबसाइट पर (प्रतिरूपण, आदि जैसी चीजों के लिए), लेकिन यदि आप ऐसा नहीं कर रहे हैं, तो ऊपर काम करना चाहिए।