2013-07-16 74 views
1

隨着應用程序的推出和解決方案的消失。以編程方式創建網站集的最佳方式是什麼?我是內部部署的。 可以用JavaScript來完成嗎?我可以使用js創建子站點,但Site Collections又如何?SharePoint 2013 - 以編程方式創建網站集

我發現了一些c#代碼來創建一個網站集,但我從哪裏運行它?在應用程序中?

+0

我不知道如何在Javascript中執行此操作,但在任何可以使用提升特權運行C#代碼的地方,只需調用SPSite.CreateSelfServiceSite的任何重載即可。 – Renan

回答

2

我已經使用事件接收器(c#)以編程方式成功創建了網站集。微軟已經證實,用JavaScript創建網站集是不可能的。我以爲我會分享我的整體解決方案,因爲我從頭到尾沒有看到完整的文檔。

  1. 我跟着以下步驟設置爲SP2013 http://msdn.microsoft.com/en-us/library/fp179923.aspx
  2. 適當的開發環境我創建了一個新的VS2012空白SharePoint 2013的項目,我選擇了場解決方案
  3. 添加Web引用
    • 右擊服務參考
    • 添加服務引用
    • 高級按鈕
    • 添加Web引用按鈕
    • 的http:// {SharePointServer} {}端口/_vti_adm/Admin.asmx
    • 登錄農場賬戶
    • 名稱引用 「SPAdminService」
    • Add Reference按鈕
  4. 添加事件接收器

    • 上右鍵單擊項目
    • 添加
    • 新項目
    • 事件接收器
  5. 下面是eventreceiver.cs文件的代碼:

    using System; 
    using System.Security.Permissions; 
    using Microsoft.SharePoint; 
    using Microsoft.SharePoint.Utilities; 
    using Microsoft.SharePoint.Workflow; 
    
    
    namespace SharePointProject5.EventReceiver1 
    { 
    /// <summary> 
    /// List Item Events 
    /// </summary> 
    public class EventReceiver1 : SPItemEventReceiver 
    { 
         /// <summary> 
         /// An item is being added. 
         /// </summary> 
         public override void ItemAdding(SPItemEventProperties properties) 
    { 
        base.ItemAdding(properties); 
        //create admin service reference 
        SPAdminService.Admin admService = new SPAdminService.Admin(); 
        //grant proper admin credentials to admin service 
        admService.Credentials = new System.Net.NetworkCredential("Farmaccount",   "Password", "Domain");    
        try 
        { 
         //specify new site collection path 
         String SitePath = "http://twv101sp13/pm/new2013"; 
         //setup properties to create the site, see reference below for more info 
         admService.CreateSite(SitePath, "new site", "description", 1033, "STS#1", "bluebunny\\sp13admin", "System Account", "[email protected]", "", "");       
        } 
        catch (System.Web.Services.Protocols.SoapException ex) 
        { 
         //I added this section so any errors would be logged in the server application log 
         SPSecurity.RunWithElevatedPrivileges(
         delegate() 
         { 
          System.Diagnostics.EventLog.WriteEntry("Application", "Message:\n" + ex.MRessage + "\nDetail:\n" + 
           ex.Detail.InnerText + 
           "\nStackTrace:\n" + ex.StackTrace); 
         }); 
        } 
    } 
    
    
    } 
    } 
    
  6. 所以,你只希望這在一定名單增加了運行一個項目,所以你必須修改Elements.xml文件。

  7. 打開的Elements.xml,與<Receivers ListUrl="http://{SharepointSite}/{targetListName}">替換該行<Receivers ListTemplateId="101"> - 這是這樣,我們也可以僅鎖定列表,而不是在該網站的所有列表

  8. 右鍵單擊您的項目和部署

  9. 您應該可以創建一個新項目,然後檢查您的新網站集。

我遇到的一個問題是網站無法以數字字符開頭。

在這篇文章的底部,它講述瞭如何調試功能事件接收器。如果沒有,我會在水中已經死了:http://msdn.microsoft.com/en-us/library/ee231550.aspx

這三篇文章幫助了很多:

  1. http://msdn.microsoft.com/en-us/library/websvcadmin.admin.createsite.aspx

  2. http://onceinawhilescribble.blogspot.com/2013/05/creating-simple-event-receiver-in.html

  3. http://www.sharepointpals.com/post/How-to-create-a-custom-list-level-event-receiver-in-SharePoint-2013-and-SharePoint-2010

相關問題