在SharePoint 2010中,站点Web服务中有一个新方法CreateWeb,用于创建新的SharePoint子站点。然而,它有很多问题 - 至少,这是我的经验。以下是应该正确使用Web服务及其方法的代码:
Uri site = new Uri("http://sp2010site/");
string webServicePath = "_vti_bin/Sites.asmx";
string webServiceUrl = Path.Combine(site.AbsoluteUri, webServicePath);
Sites webService = new Sites();
webService.Credentials = CredentialCache.DefaultNetworkCredentials;
webService.Url = webServiceUrl;
//the following line creates the sub site
string result = webService.CreateWeb("newsite", "New Site", "Site desc", "STS#0",
1033, true, 1033, true, 1033, true, true, true, true, true, true, true);
如果发生错误,以下代码将返回Soap异常(例如,已存在地址为“newsite”的子站点,或者指定的模板不存在)。
如果一切正常,则会触发InvalidOperation异常,并显示消息“XML文档中存在错误(1,310)。”,但该网站实际上已创建!
如果一切正常,但是我使用自己的解决方案而不是非默认的SharePoint模板(例如团队网站,即STS#0),我会收到Soap异常并且不会创建该网站。
到目前为止,这是一次糟糕的经历。请在SP 2010中发布您的子网站创建经验,如果您有任何问题,请将解决方案发布到这些问题。干得好!
答案 0 :(得分:1)
SP2010 beta中的步骤可以从[自定义]模板创建[sub]网站:
[我手动滚动我的SP SOAP“所以看到完整的请求和响应是微不足道的。]
答案 1 :(得分:0)
SharepointSiteService.Sites siteWS = new SharepointSiteService.Sites();
siteWS.Credentials = new System.Net.NetworkCredential("user1", "password", "domain");
try
{
SharepointSiteService.Template[] templates;
siteWS.GetSiteTemplates(1033, out templates);
SharepointSiteService.Template template = (from SharepointSiteService.Template t
in templates
where t.Title == "Test Template"
select t).FirstOrDefault();
siteWS.CreateWeb("<parent web name>" + "/" + <sub web name>" + "/" + <sub web name>", "Test web", "Test Web", template.Name, 1033, true, 1033, true, 1033, true, false, false, false, false, false, false);
}
catch (Microsoft.SharePoint.SoapServer.SoapServerException e)
{
System.Diagnostics.EventLog.WriteEntry("SharePoint Foundation", "soap exception" + e.Detail + e.Message + e.Source + e.Node);
}
catch (Exception ex)
{
System.Diagnostics.EventLog.WriteEntry("SharePoint Foundation", "Site Created");
System.Diagnostics.EventLog.WriteEntry("SharePoint Foundation", ex.Message + ex.Source + ex.StackTrace);
}