Information about Web Farm Framework API is hard to find, so I think this may help some others like me who are interested in using WFF and web deploy APIs.
In this case, I wanted to get a list of all servers in a particular Web Farm and then push a file to all of them.
First step is to add references to these libreries in your project:
Microsoft.Web.Deployment
Microsoft.web.Farm
The DLLs for these libraries are located in respective folders under C:\Program Files\IIS
I used the following helper methods to do what I needed.
public class DeploymentHelper
{
public static List<string> GetWebFarmServerNames(string WebFarmName)
{
List<string> ServerNames = new List<string>();
using (WebFarmManager manager = new WebFarmManager())
{
// Make sure webfarm is valid
WebFarm webFarm = null;
if (!manager.WebFarms.TryGetWebFarm(WebFarmName, out webFarm))
{
throw new ArgumentException("WebFarm does not exist");
}
foreach (Server server in webFarm.Servers)
{
ServerNames.Add(server.Address);
}
}
return ServerNames;
}
public static void SyncFolder(string SourcePath, string DestinationPath, List<string> DestinationServers)
{
DeploymentWellKnownProvider provider = DeploymentWellKnownProvider.ContentPath;
DeploymentSyncOptions syncOptions = new DeploymentSyncOptions();
DeploymentBaseOptions sourceBaseOptions = new DeploymentBaseOptions();
DeploymentBaseOptions destinationBaseOptions = new DeploymentBaseOptions();
DeploymentObject deploymentObject = DeploymentManager.CreateObject(provider, SourcePath, sourceBaseOptions);
foreach (string server in DestinationServers)
{
destinationBaseOptions.ComputerName = server;
deploymentObject.SyncTo(provider, DestinationPath, destinationBaseOptions, syncOptions);
}
}
public static void SyncFile(string SourcePath, string DestinationPath, List<string> DestinationServers)
{
DeploymentWellKnownProvider provider = DeploymentWellKnownProvider.FilePath;
DeploymentSyncOptions syncOptions = new DeploymentSyncOptions();
DeploymentBaseOptions sourceBaseOptions = new DeploymentBaseOptions();
DeploymentBaseOptions destinationBaseOptions = new DeploymentBaseOptions();
DeploymentObject deploymentObject = DeploymentManager.CreateObject(provider, SourcePath, sourceBaseOptions);
foreach (string server in DestinationServers)
{
destinationBaseOptions.ComputerName = server;
deploymentObject.SyncTo(provider, DestinationPath, destinationBaseOptions, syncOptions);
}
}
}
db9145c5-759e-4a38-9974-ebc99894c5b5|2|5.0
web farm framework, api, wff