如何使用SharePoint Web服务删除SharePoint子站点?

时间:2009-09-22 12:26:00

标签: sharepoint

我被迫使用SharePoint Web服务。我需要一个可以删除SharePoint子站点的Web服务。我曾尝试使用DeleteWorkspace方法(Meetings.asmx Web服务),但它只能删除满足工作空间的子站点(我使用从团队站点派生的自定义模板)。任何帮助将不胜感激,谢谢。

5 个答案:

答案 0 :(得分:1)

不幸的是,开箱即用的Web服务无法实现这一点。 (它们仅具有在网站集级别删除的功能。)

您需要开发custom web service并将其部署到SharePoint场。

答案 1 :(得分:1)

令人惊讶!不,你做不到....我知道!奇怪的是,它会遗漏。我敢肯定,如果我知道原因,我会做出一些决定,但要打败我。

唯一的选择是部署自定义代码 - 事件接收器或Web服务。

答案 2 :(得分:1)

如果升级到SharePoint 2013,Sites网络服务中有一种新方法:DeleteWeb。它希望子网站的URL相对于您将Web服务连接到的站点进行删除。

---费达

答案 3 :(得分:0)

如果要删除网站,请尝试使用dws webservice。

我使用了DWS.DeleteDWS(),其中functoins get_constant等简单地获取了登录和常规网站服务的常量,例如_vti_bin/dws.asmx

Public Function RemoveWSSSite(ByVal sPath As String, ByVal sSubSiteName As String) As Boolean
        Dim DTConstant As New DTFrameWork.DTConstant
        Dim SPDWS1 As New SPDws.Dws
        Dim sSubsiteURL As String = ""

        If (sSubSiteName = "") Then
            sSubsiteURL = ""
        Else
            sSubsiteURL = sSubSiteName & "/"
        End If
        SPDWS1.PreAuthenticate = True
        SPDWS1.Credentials = New System.Net.NetworkCredential(DTconst.Get_Constant_String_Value("SP_m_AdminUser"), DTconst.Get_Constant_String_Value("SP_m_AdminPassword"), DTconst.Get_Constant_String_Value("SP_m_SiteDomain"))
        SPDWS1.Url = DTconst.Get_Constant_String_Value("SP_m_SiteServerName") & IIf(sPath.StartsWith("/"), "", "/") & sPath & IIf(sPath.EndsWith("/"), "", "/") & sSubsiteURL & DTconst.Get_Constant_String_Value("SP_m_dws_asmx")
        Try

            SPDWS1.DeleteDws()

            Return True
        Catch ex As Exception
            Return False
        End Try
    End Function

答案 4 :(得分:0)

像Ben说的那样,使用 / _ vti_bin / Dws.asmx 应该有效。这是另一个例子

public bool  DeleteSubSite(string urlSubSite, string user, string passw, string domain)
    {
        bool retValue = true;
        Dws docWS = new Dws();
        docWS.Url = urlSubSite + "/_vti_bin/Dws.asmx"; ;
        docWS.Credentials = new System.Net.NetworkCredential(user, passw, domain);

        try
        {
            docWS.DeleteDws();
        }
        catch (SoapException soex)
        {
            retValue = false;
        }
        return retValue;
    }