.NET FISHER

专注.NET, Sharepoint, MCMS, WinFX, Ajax....

导航

Disable Sharepoint 网站的 Web Service

Posted on 2005-04-16 11:30  FISHER  阅读(1448)  评论(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必须有足够的权限.