Проверка подлинности с помощью форм Sharepoint Запуск с другой учетной записью - PullRequest
0 голосов
/ 23 октября 2009

Я консольное приложение, которое создает дочерние сайты под семейством сайтов. Семейство сайтов принимает только пользователей на основе форм.

Теперь, когда я запускаю консольное приложение, оно имеет учетные данные Windows.

Мне нужен способ запуска кода в консольном приложении, которое создает дочерний сайт для запуска под пользователем форм, который является администратором этого семейства сайтов.

Пожалуйста, дайте мне знать ваши предложения.

Спасибо

1 Ответ

0 голосов
/ 23 октября 2009

Вам необходимо создать новый веб-сервис в веб-приложении центра администрирования ( [12 hive] \ AMDISAPI ) и добавить функцию, которая создает дочерние сайты.

Вот пример - функция hstCreateSubSite из проекта 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();
    }
}
...