Apps の導入により、ソリューションはなくなります。プログラムでサイト コレクションを作成する最良の方法は何ですか? 私はオンプレミスです。JavaScriptでできますか?js を使用してサブサイトを作成できますが、サイト コレクションはどうでしょうか?
サイト コレクションを作成するための C# コードをいくつか見つけましたが、どこから実行すればよいですか? アプリで?
Apps の導入により、ソリューションはなくなります。プログラムでサイト コレクションを作成する最良の方法は何ですか? 私はオンプレミスです。JavaScriptでできますか?js を使用してサブサイトを作成できますが、サイト コレクションはどうでしょうか?
サイト コレクションを作成するための C# コードをいくつか見つけましたが、どこから実行すればよいですか? アプリで?
イベント レシーバー (c#) を使用してプログラムでサイト コレクションを作成しました。Microsoft は、JavaScript を使用してサイト コレクションを作成できないことを確認しています。最初から最後まで完全なドキュメントが表示されないため、全体的なソリューションを共有すると思いました。
イベントレシーバーを追加
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", "cslee@bluebunny.com", "", "");
}
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);
});
}
}
}
}
そのため、特定のリストに項目が追加されたときにのみこれを実行する必要があるため、Elements.xml ファイルを変更する必要があります。
Elements.xml を開き、この行<Receivers ListTemplateId="101">
を次のように置き換えます<Receivers ListUrl="http://{SharepointSite}/{targetListName}">
- これは、サイト上のすべてのリストではなく、そのリストのみをターゲットにできるようにするためです。
プロジェクトを右クリックしてデプロイします
新しいアイテムを作成して、新しいサイト コレクションを確認できるはずです。
私が経験した問題の 1 つは、サイトを数字で開始できないことです。
この記事の最後に、機能イベント レシーバーをデバッグする方法を示します。それがなければ、私は水の中で死んでいたでしょう: http://msdn.microsoft.com/en-us/library/ee231550.aspx
次の 3 つの記事が大いに役立ちました。