I'm trying to change the path to some of my IIS sites programmatically. The change only takes effect only for one of the sites (the same one) and not all of them. Can anyone see what I am doing wrong here?
using WebAdministration = Microsoft.Web.Administration;
using (WebAdministration.ServerManager serverManager = new WebAdministration.ServerManager())
{
serverManager.Sites.ToList().ForEach(site =>
{
site.Stop();
serverManager.CommitChanges();
//ChangeDirectoryOfSite(site
site.Applications.ToList().ForEach(app =>
{
//ChangeDirectoryOfApplication
//if (app.VirtualDirectories?.Attributes["path"]?.Value...
app.VirtualDirectories.Attributes["path"].Value = ...
//if (app.VirtualDirectories?.Attributes["physicalPath"]?.Value?
app.VirtualDirectories.Attributes["physicalPath"].Value = ...
app.VirtualDirectories.ToList().ForEach(virtualDir =>
{
//ChangeDirectoryOfVirtualDirectoy
//if (virtualDir.Attributes["path"].Value...
virtualDir.Attributes["path"].Value = ...
//if (virtualDir.Attributes["physicalPath"].Value...
virtualDir.Attributes["physicalPath"].Value = ...
}
site.Start()
}
serverManager.CommitChanges();
}
}
The answer was to .CommitChanges()
after each value change:
I marked the code changes with // <-- Add this
below
using WebAdministration = Microsoft.Web.Administration;
using (WebAdministration.ServerManager serverManager = new WebAdministration.ServerManager())
{
serverManager.Sites.ToList().ForEach(site =>
{
site.Stop();
serverManager.CommitChanges();
//ChangeDirectoryOfSite(site
site.Applications.ToList().ForEach(app =>
{
//ChangeDirectoryOfApplication
//if (app.VirtualDirectories?.Attributes["path"]?.Value...
app.VirtualDirectories.Attributes["path"].Value = ...
serverManager.CommitChanges(); // <--- Add this
//if (app.VirtualDirectories?.Attributes["physicalPath"]?.Value?
app.VirtualDirectories.Attributes["physicalPath"].Value = ...
serverManager.CommitChanges(); // <--- Add this
app.VirtualDirectories.ToList().ForEach(virtualDir =>
{
//ChangeDirectoryOfVirtualDirectoy
//if (virtualDir.Attributes["path"].Value...
virtualDir.Attributes["path"].Value = ...
serverManager.CommitChanges(); // <--- Add this
//if (virtualDir.Attributes["physicalPath"].Value...
virtualDir.Attributes["physicalPath"].Value = ...
serverManager.CommitChanges(); // <--- Add this
}
site.Start()
}
serverManager.CommitChanges();
}
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.