समस्या: नई आईआईएस आवेदन ताल बनाया है और अनुमतियों के लिए आवेदन पूल पहचान का उपयोग करने के लिए सेट कर रहे हैं, मैं इस तरह के रूप उपयोगकर्ता समूह के लिए उन पहचान जोड़ने के बारे में अनिश्चित हूं प्रशासक या प्रदर्शन काउंटर उपयोगकर्ता।प्रोग्राम आईआईएस आवेदन पूल पहचान "उन" बताए समूह को
पृष्ठभूमि: मैं वर्तमान में जो निम्न कार्य करने के क्रम में Microsoft.Web.Administration का उपयोग करता है एक सी # नेट पुस्तकालय लिख रहा हूँ:
- यदि आईआईएस 7.x स्थापित किया गया है का पता लगाने, और अगर तो, क्या घटक।
- आईआईएस 7.x को आवश्यक घटकों की एक प्रदान की गई सूची में स्थापित या अपग्रेड करें।
- आईआईएस के माध्यम से एक या एक से अधिक वेब साइट बनाएं/प्रबंधित करें।
- स्वचालित रूप से/बनाने वेब साइट प्रति एक अनुप्रयोग पूल का प्रबंधन
संदर्भ है कि इस पुस्तकालय निष्पादन संस्थापक द्वारा प्रयोग की जाने के रूप में एक वेब सर्वर और वेब साइटों/सेवाओं पर Windows सर्वर OSes के स्वचालित तैनाती प्रदान करना है एक बड़े सॉफ्टवेयर परिनियोजन का हिस्सा। अब तक, उपर्युक्त सभी को आवेदन पूल/वेबसाइट निर्माण पर किए जाने वाले कुछ अनुमतियों के स्वचालन को छोड़कर कार्यान्वित किया गया है, परीक्षण किया गया है, और (ज्यादातर) कार्यात्मक है।
एक नई वेबसाइट स्थापित करने के लिए मेरी विधि में, मैं एक नया आवेदन पूल बना सकते हैं और आवेदन पूल पहचान का उपयोग करने के लिए मजबूर यह:
static public void InstallSite(string name, string path, int port)
{
Site site;
var appPoolName = ApplicationPoolBaseName + name;
using (var iisManager = new ServerManager())
{
// Set up a custom application pool for any site we run.
if (!iisManager.ApplicationPools.Any(pool => pool.Name.Equals(appPoolName)))
{
iisManager.ApplicationPools.Add(appPoolName);
iisManager.ApplicationPools[appPoolName].ManagedRuntimeVersion = "v4.0";
}
iisManager.CommitChanges();
}
// ... other code here ('site' gets initialized) ...
using (var iisManager = new ServerManager())
{
// Set anonymous auth appropriately
var config = iisManager.GetWebConfiguration(site.Name);
var auth = config.GetSection("system.web/authentication");
auth.SetMetadata("mode", "Windows");
var authSection = config.GetSection("system.webServer/security/authentication/anonymousAuthentication");
authSection.SetAttributeValue("enabled", true);
authSection.SetAttributeValue("userName", string.Empty); // Forces the use of the Pool's Identity.
authSection = config.GetSection("system.webServer/security/authentication/basicAuthentication");
authSection.SetAttributeValue("enabled", false);
authSection = config.GetSection("system.webServer/security/authentication/digestAuthentication");
authSection.SetAttributeValue("enabled", false);
authSection = config.GetSection("system.webServer/security/authentication/windowsAuthentication");
authSection.SetAttributeValue("enabled", false);
iisManager.CommitChanges();
}
// ... other code here ...
}
मैं यह समझ के रूप में, यह सबसे अच्छा सुरक्षा अभ्यास होगा, और इसके बाद मैं न्यूनतम वेबसाइट एक्सेस से अधिक कुछ के लिए विशिष्ट वेब साइटों पर अनुमतियां जोड़ूंगा। इस प्रक्रिया का हिस्सा उपयोगकर्ता अनुप्रयोगों, जैसे प्रशासक या प्रदर्शन मॉनीटर उपयोगकर्ताओं को इन एप्लिकेशन पूल पहचानों को जोड़ना होगा। यह वह जगह है जहां जटिलताएं उत्पन्न होती हैं।
अब, documented elsewhere के रूप में, प्रत्येक आवेदन पूल पहचान IIS AppPool\\<pool_name>
के प्रारूप में मौजूद है, लेकिन इस छद्म-उपयोगकर्ता सामान्य जीयूआई उपयोगकर्ता प्रबंधन पर नियंत्रण के माध्यम से सूचीबद्ध नहीं है, और जब this example on SO निम्नलिखित ऐसे System.DirectoryServices.AccountManagement
के रूप में पुस्तकालयों के माध्यम से सुलभ हो प्रतीत नहीं होता है । साथ ही, अनुप्रयोग पूल पहचान के बारे में अन्य प्रश्न referencing it from within a child website से संबंधित हैं, जो कि किसी स्थापना संदर्भ से नहीं हैं।
तो, किसी को पता है क्या उचित तरीके के लिए
- क) संदर्भित और प्रोग्राम के रूप में आवेदन पूल पहचान पहुंच रहे हैं।
- बी) उन्हें उपयोगकर्ता समूह जोड़कर एप्लिकेशन पूल पहचान अनुमतियां देना।
मैं परिणाम पुन: उत्पन्न करने के लिए इस के लिए अपना समाधान स्वैप करने का प्रयास करने जा रहा हूं। यह आशाजनक लग रहा है, साझा करने के लिए धन्यवाद! – jmsb