.NET FISHER

专注.NET, Sharepoint, MCMS, WinFX, Ajax....
posts - 12, comments - 28, trackbacks - 0, articles - 1

Disable Sharepoint 网站的 Web Service

Posted on 2005-04-16 11:30 FISHER 阅读(1282) 评论(1) 编辑 收藏

在一个Sharepoint的项目中,需要暂时禁止访问一些网站。因此我做了一webservice完成此功能.代码如下:


[WebMethod]
public bool SuspendSite(string virtualServerUrl, string siteRelativeUrl, bool suspend)
{
 
 Microsoft.SharePoint.Administration.SPGlobalAdmin ga = new Microsoft.SharePoint.Administration.SPGlobalAdmin();
 Microsoft.SharePoint.Administration.SPVirtualServer server = ga.OpenVirtualServer(new Uri(virtualServerUrl));

 if(server == null) return false;

 Microsoft.SharePoint.SPSite spSite = server.Sites[relatedUrl];
 spSite.AllowUnsafeUpdates = true;
    
 spSite.WriteLocked = false;
 spSite.ReadLocked = suspend;
 if(suspend)
 {
  spSite.RootWeb.AllowUnsafeUpdates = true;
  spSite.LockIssue = "Unknown";
 }
 spSite.AllowUnsafeUpdates = false;
 spSite.Close();
 spSite.Dispose();
 return true;
}


要注意几点:
1. 网站必须是顶级网站.
2. 不能从 GetContextSite(Context) 或 new SPSite(url) 得到 SPSite, 必须从SPGlobalAdmin中找出此SPSite,因为此为Global Admin中的功能.否则将有Access Denied的错误.(我也不理解为何要如此,估计是Microsoft的愚蠢吧)
3. WebService的App Pool Account必须有足够的权限.