2009-09-22 91 views
0

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

回答

1

令人惊讶!不,你不能这样做......我知道!奇怪它会被遗漏。我敢肯定,如果我知道为什么会做出一些决定,但会打败我。

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

+0

@DJ:这并不奇怪。这些Web服务中缺少大量的功能。预计这将在SharePoint 2010中得到解决! – 2009-09-22 13:01:47

+0

来吧亚历克斯,DeleteSite是否存在DeleteList等,但网络对象是错过?这在我的书中很奇怪。 – 2009-09-22 13:47:15

+0

@DJ:我想我们在这里同意。你的观点是,Web服务提供了不一致的功能。我的观点是他们完全错过了功能。最终结果:他们吮吸。 – 2009-09-22 14:02:25

1

不幸的是,对于开箱即用的Web服务,这是不可能的。 (它们只具有在网站集级别删除的功能。)

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

+0

谢谢您的回答。到目前为止,SharePoint Web服务吸引了大量时间。 – Boris 2009-09-22 15:31:54

0

如果你想删除一个网站尝试使用dws web服务。

我用DWS.DeleteDWS(),其中functoins get_constant等简单找回常数登录和web服务像_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 
0

像本说,使用/_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; 
    } 
1

如果您升级到SharePoint 2013,存在于Sites Web服务的新方法:DeleteWeb。它期望相对于您将该Web服务连接到的网站,删除该子网站的URL。

--- Ferda

相关问题