サイト コレクションの下にサブ サイトを作成するコンソール アプリケーション サイト コレクションは、フォーム ベースのユーザーのみを受け入れます。
ここで、コンソール アプリケーションを実行すると、Windows 資格情報が使用されます。
そのサイト コレクションの管理者であるフォーム ユーザーの下で実行するサブ サイトを作成するコンソール アプリでコードを実行する方法が必要です。
あなたの提案を教えてください。
ありがとう
サイト コレクションの下にサブ サイトを作成するコンソール アプリケーション サイト コレクションは、フォーム ベースのユーザーのみを受け入れます。
ここで、コンソール アプリケーションを実行すると、Windows 資格情報が使用されます。
そのサイト コレクションの管理者であるフォーム ユーザーの下で実行するサブ サイトを作成するコンソール アプリでコードを実行する方法が必要です。
あなたの提案を教えてください。
ありがとう
サーバーの全体管理 Web アプリケーション ( [12 hive]\AMDISAPI )内に新しい Web サービスを作成し、サブサイトを作成する関数を追加する必要があります。
次に例を示します - SharePoint for HostersプロジェクトのhstCreateSubSite関数:
/// <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();
}
}