开发者

Sharepoint Forms authentication Run with different account

I a console application that creates a sub sites under a site collection The site collection accepts only forms based user.

Now, when i run the console application, its with windows credentials.

I need some way to run the code in console app that creates sub site to run under forms user who is admin to that site collection.

Please let me know your suggestions开发者_如何学编程.

Thanks


You need to create a new Web service within the Central Administration Web application ([12 hive]\AMDISAPI) and add a function that creates subsites.

Here's an example - the hstCreateSubSite function from the SharePoint for Hosters project:

/// <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();
    }
}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜