Register site in Sharepoint programatically
/// <summary> /// Eventhandler that invokes the RegisterInSiteDirectory method. Will only run on the SPS server /// with SPS admin as current identity. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void button1_Click(object sender, System.EventArgs e) { Hashtable itemData = new Hashtable(); itemData.Add("CustomCategory", "SomeData"); this.RegisterInSiteDirectory("SiteDirectory", "Sites", "Generated Site Name", "Some Description", "http://sps2003base:8080/sites/genepool", itemData); } /// <summary> /// Registers a site in a given site directory and enlists site for search in the same manner as /// the Sharepoint Site Directory Area UI /// </summary> /// <param name="siteDirectoryAreaName">Name of the Site Directory area.</param> /// <param name="siteDirectoryName">Name of the Site Directory List.</param> /// <param name="title">Site Title to be used in the list and search entry.</param> /// <param name="description">Site Description to be used in the list and search entry.</param> /// <param name="siteUrl">Site Description to be used in the list and for crawling.</param> /// <param name="itemData">Custom site metadata used in the list and included in portal content search.</param> public void RegisterInSiteDirectory(string siteDirectoryAreaName, string siteDirectoryName, string title, string description, string siteUrl, Hashtable itemData) { SPSite portalSite = new SPSite("http://sps2003base:8080"); SPWeb siteDirectoryArea = portalSite.AllWebs[siteDirectoryAreaName]; SPList siteDirectoryList = siteDirectoryArea.Lists[siteDirectoryName]; // Create new item in the list SPListItem item = siteDirectoryList.Items.Add(); // Set default and required values item["SiteTitle"] = title; item["SiteURL"] = siteUrl; item["Description"] = description; // Add custom metadata foreach(DictionaryEntry entry in itemData) { item[entry.Key.ToString()] = entry.Value; } item.Update(); // Register the site for search Uri siteUri = new Uri("http://sps2003base:8080"); TopologyManager tm = new TopologyManager(); PortalSite site = tm.PortalSites[siteUri]; PortalContext portalContext = PortalApplication.GetContext(site); AreaManager.SuggestDeepCrawl( portalContext, title, description, siteUrl, "" /* LargeIconUrl */, "" /* SmallIconUrl */, "$$$default$$$" /* Index Catalog */, "$$$default$$$" /* Index Scope */); }