Vous devez créer un nouveau service Web dans l'application Web Administration centrale ([12 ruche] \ AMDISAPI de) et ajouter une fonction qui crée des sous-sites.
Voici un exemple - la fonction hstCreateSubSite du projet SharePoint for Hosters:
/// <summary>
/// Method to create a Sub site for a site collection
/// </summary>
/// <param name="strSiteURL">url of the sitecollection i.e. "http://www.sitea.com"</param>
/// <param name="subsitePath">the path to the subsite i.e. inventory</param>
/// <param name="strTitle">sub site title</param>
/// <param name="strDesc">sub site description</param>
/// <param name="strTemplate">a valid templateID</param>
/// <param name="nLCID">the LCID for the language i.e. 1033 for english</param>
[WebMethod]
public void hstCreateSubSite(string strSiteURL, string subSitePath, string strTitle, string strDesc, string strTemplate, uint nLCID)
{
SPSite oSite = new SPSite(strSiteURL);
SPWeb oSubSiteWeb = oSite.OpenWeb();
SPWeb oWeb = null;
if (String.IsNullOrEmpty(strDesc)) strDesc = null;
if (String.IsNullOrEmpty(strTitle)) strTitle = null;
try
{
// elevate permissions to allow user to create a new site.
SPSecurity.RunWithElevatedPrivileges(delegate()
{
// the subsite will inherit permissions and will not convert the site if it exists
oWeb = oSubSiteWeb.Webs.Add(subSitePath, strTitle, strDesc, nLCID, strTemplate, false, false);
SPNavigationNodeCollection nodes = oSubSiteWeb.Navigation.TopNavigationBar;
SPNavigationNode navNode = new SPNavigationNode(strTitle, subSitePath);
nodes.AddAsLast(navNode);
oWeb.Navigation.UseShared = true;
// create entry in property bag to store template and url in the subsite.
oWeb.AllowUnsafeUpdates = true;
// add the Templateid to the property bag. This needs to be done becuase
// sites that are created from site templates (.stp) do not retain the templateid.
oWeb.Properties.Add("STP_ID", strTemplate);
oWeb.Properties.Update();
oWeb.AllowUnsafeUpdates = false;
});
}
catch (Exception ex)
{
throw ex;
}
finally
{
//dispose objects
if (oWeb != null)
oWeb.Dispose();
if (oSite != null)
oSite.Dispose();
}
}