Sorun: Yeni IIS Uygulama Havuzları oluşturulduğunda ve Uygulama Havuzu Kimliği'ni izinler için kullanacak şekilde ayarlandığında, bu kimliklerin Kullanıcı Gruplarına nasıl ekleneceğinden emin değilim. Yönetici veya Performans Sayacı Kullanıcıları.Gruplar için IIS Uygulama Havuzu Kimliği "kullanıcılar" ı Programlı Olarak Atama
Amaç: Şu anda aşağıdakileri yapmak amacıyla Microsoft.Web.Administration kullanan bir C# .NET kitaplığı yazıyorum:
- IIS 7.x yüklüyse Algılama ve eğer Yani, hangi bileşenleri.
- IIS 7.x'i, gerekli bileşenlerin sağlanan bir listesine yükleyin veya yükseltin.
- IIS aracılığıyla bir veya daha çok web sitesi oluşturun/yönetin. Otomatik olarak
- oluşturmak/web sitesinin başına bir uygulama havuzu yönetmek
bağlam bu kütüphane Windows Server işletim sistemleri üzerinde bir web sunucusu ve web siteleri/hizmetler olarak otomatik dağıtımını sağlamak üzere çalıştırılabilir montajcılar tarafından kullanılmak üzere olmasıdır Daha büyük bir yazılım dağıtımının parçası. Şimdiye kadar, yukarıdakilerin hepsi uygulanmış, test edilmiş ve Uygulama Havuzu/Web Sitesi oluşturma üzerinde yapılması gereken bazı izinlerin otomasyonu hariç (çoğunlukla) işlevseldir. Yeni bir web sitesi yüklemek için benim yöntemde
, yeni bir uygulama havuzunu oluşturmak ve Uygulama Havuzu Kimliğini kullanmaya zorlamak: Anladığım kadarıyla
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 ...
}
, bu iyi güvenlik uygulaması olacak ve Daha sonra, minimum sistem erişiminden daha fazlası için belirli web sitelerine izinler ekleyeceğim. Bu işlemin bir kısmı, Uygulama Havuzu kimliklerini Yönetici veya Performans İzleyicisi Kullanıcıları gibi Kullanıcı Gruplarına eklemektir. Komplikasyonların ortaya çıktığı yer burasıdır.
Şimdi documented elsewhere gibi her Uygulama Havuzu Kimliği IIS AppPool\\<pool_name>
biçiminde var ama bu sahte kullanıcı, normal GUI kullanıcı yönetimi denetimler arasında yer almıyorsa ve this example on SO izlerken böyle System.DirectoryServices.AccountManagement
olarak kütüphaneler aracılığıyla erişilebilir görünmüyor . Ayrıca, Uygulama Havuzu Kimliği ile ilgili diğer sorular, bir yükleme kapsamında değil, referencing it from within a child website ile ilişkili görünmektedir.
Yani, herkes uygun yöntemler başvuruda bulunma ve programlı Uygulama Havuzu Kimlikleri erişen
- a) ne olduğunu gelmez.
- b) Kullanıcı Havuzları ekleyerek Uygulama Havuzu Kimliklerinin verilmesi.
Sonuçların çoğaltılması için benim çözümümüzü değiştirmeyi deneyeceğim. Bu umut verici görünüyor, paylaşım için teşekkürler! – jmsb