Wie kann ich IIS-Anwendungspool-Einstellungen/Eigenschaften programmgesteuert (C#) ändern? Zum Beispiel, wie kann ich die Einstellung "32-Bit-Anwendungen aktivieren" ändern? Gibt es Eigenschaftsverweise für IIS 6 und IIS 7 auf MSDN oder Technet? Vielen Dank im Voraus für Ihre Hilfe!IIS-Anwendungspool: Einstellungen programmgesteuert ändern
5
A
Antwort
1
Versuchen Sie this für Größe.
DirectoryEntry root = this.GetDirectoryEntry("IIS://" + this.DomainName + "/W3SVC/AppPools");
if (root == null)
return null;
List<ApplicationPool> Pools = new List<ApplicationPool>();
...
7
Sie können das Problem mit appcmd.exe lösen. Wobei "DefaultAppPool" der Name des Pools ist.
appcmd list apppool /xml "DefaultAppPool" | appcmd set apppool /in /enable32BitAppOnWin64:true
Wenn Sie irgendwelche Probleme haben mit fliessendem es mit C# zu sehen, How To: Execute command line in C#.
ps: Weitere Informationen zu appcmd.exe finden Sie unter here. Standardposition des Werkzeugs ist C: \ windows \ system32 \ inetsrv
0
Eine einfachere Lösung, die für mich gearbeitet
ServerManager server = new ServerManager();
ApplicationPoolCollection applicationPools = server.ApplicationPools;
//this is my object where I put default settings I need,
//not necessary but better approach
DefaultApplicationPoolSettings defaultSettings = new DefaultApplicationPoolSettings();
foreach (ApplicationPool pool in applicationPools)
{
try
{
if (pool.Name == <Your pool name here>)
{
pool.ManagedPipelineMode = defaultSettings.managedPipelineMode;
pool.ManagedRuntimeVersion = defaultSettings.managedRuntimeVersion;
pool.Enable32BitAppOnWin64 = defaultSettings.enable32BitApplications;
pool.ProcessModel.IdentityType = defaultSettings.IdentityType;
pool.ProcessModel.LoadUserProfile = defaultSettings.loadUserProfile;
//Do not forget to commit changes
server.CommitChanges();
}
}
catch (Exception ex)
{
// log
}
}
und mein Objekt zum Beispiel Zweck
public class DefaultApplicationPoolSettings
{
public DefaultApplicationPoolSettings()
{
managedPipelineMode = ManagedPipelineMode.Integrated;
managedRuntimeVersion = "v4.0";
enable32BitApplications = true;
IdentityType = ProcessModelIdentityType.LocalSystem;
loadUserProfile = true;
}
public ManagedPipelineMode managedPipelineMode { get; set; }
public string managedRuntimeVersion { get; set; }
public bool enable32BitApplications { get; set; }
public ProcessModelIdentityType IdentityType { get; set;}
public bool loadUserProfile { get; set; }
}
Wer wußte, dass Sie Rohrleitungen verwenden könnten !? Danke, das ist großartig. – Rory