微软同时也提供了Microsoft.SharePoint.Administration这个命名空间来提供相应的管理功能给我们。
这里是微软知识库的文章
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/spptsdk/html/tsansMicrosoftSharePointAdministration_SV01027830.asp
通过对Microsoft.SharePoint.Administration的了解,我们几乎可以做到通过控制台完成的所有事情。
我这里举个例子来说明,如何使用这个命名空间来管理wss站点。
前一篇文章说明了,如何在webpart上使用Treeview控件
http://www.cnblogs.com/king_astar/archive/2005/04/05/132662.html
其中有一个过程就是将web_client排除在wss管理路径之外。
当时我们的做法是通过wss控制台来完成,现在让我们使用代码的力量吧。
特别注意,要想通过Microsoft.SharePoint.Administration来管理站点,必需是全局administrator,站点的administrator都无法运行相关代码
先来显示一下wss管理的路径有哪些,
Microsoft.SharePoint.Administration.SPGlobalAdmin ospGlobalAdmin = new SPGlobalAdmin();
//Other sample code
SPVirtualServer olocalHost = ospGlobalAdmin.OpenVirtualServer(
new Uri("http://localhost"));
Text = olocalHost.Version.ToString();
Text +="<br>"+ospGlobalAdmin.IsCurrentUserGlobalAdmin( ).ToString();
for(int i=0;i<olocalHost.Config.Prefixes.Count;i++)
{
Text+="<br>"+olocalHost.Config.Prefixes[i].Name+" "+olocalHost.Config.Prefixes[i].PrefixType.ToString();
}
//Other sample code
SPVirtualServer olocalHost = ospGlobalAdmin.OpenVirtualServer(
new Uri("http://localhost"));
Text = olocalHost.Version.ToString();
Text +="<br>"+ospGlobalAdmin.IsCurrentUserGlobalAdmin( ).ToString();
for(int i=0;i<olocalHost.Config.Prefixes.Count;i++)
{
Text+="<br>"+olocalHost.Config.Prefixes[i].Name+" "+olocalHost.Config.Prefixes[i].PrefixType.ToString();
}
先实例化一个SPGlobalAdmin,全局管理类,
确定管理哪个虚拟服务器,注意到没有跟wss管理站点几乎一样。
我觉得微软建立的模型的确不错。
接着显示,host版本,确定自己是否是全局管理员角色。
找到虚拟服务器了,我们来看看配置-config
很好找到我们想要的东西了, Prefixes
ok,第一步,我们先尝试把它的管理的路径列出来。
编译,拷贝到服务器。
显示,出现安全限制问题,还是象以前不管它,先在web.config文件中设置
<trust level="Full" originUrl="" />
后面我会说如何不用level=full的配置文件。
继续尝试刷新界面,OK,东西出来了。
好的,我们来尝试把webctrl_client加入到wss排除路径中去(注意图中已经显示webctrl_client已经排除了,我们这里假设未排除)
这一步也很简单:
我们先把全局设置成为允许不安全更新。
请注意,如果不设置这步以下的更新不能完成。
另外,这步不设置,wss的提示信息为
请将SPWeb的AllowUnsafeUpdates 设置为true,这里有点问题,因为并非是站点的administrator有权限,而是全局的才有权限
请注意我们设置ospGlobalAdmin.Config.GlobalAdmin
try
{
ospGlobalAdmin.Config.GlobalAdmin.AllowUnsafeUpdates = true;
//olocalHost.Config.Prefixes.Delete("rockTestFolder");
olocalHost.Config.Prefixes.Add("rockTestFolder",Microsoft.SharePoint.Administration.SPPrefixType.Exclusion);
}
catch(System.Exception ex)
{
Text = ex.Message;
}
finally
{
ospGlobalAdmin.Config.GlobalAdmin.AllowUnsafeUpdates = false;
}
{
ospGlobalAdmin.Config.GlobalAdmin.AllowUnsafeUpdates = true;
//olocalHost.Config.Prefixes.Delete("rockTestFolder");
olocalHost.Config.Prefixes.Add("rockTestFolder",Microsoft.SharePoint.Administration.SPPrefixType.Exclusion);
}
catch(System.Exception ex)
{
Text = ex.Message;
}
finally
{
ospGlobalAdmin.Config.GlobalAdmin.AllowUnsafeUpdates = false;
}
运行通过。
另外说一说,如果不设置level=full,怎么样修改,
WSS_Minimaltrust.config文件,
需要添加如下代码
<SecurityClass Name="SharePointPermission" Description="Microsoft.SharePoint.Security.SharePointPermission, Microsoft.SharePoint.Security, Version=11.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" />
<SecurityClass Name="EnvironmentPermission" Description="System.Security.Permissions.EnvironmentPermission, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<SecurityClass Name="EnvironmentPermission" Description="System.Security.Permissions.EnvironmentPermission, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<IPermission class="SharePointPermission" version="1" Unrestricted="true" Name="FullTrust" Description="Allows full access to all resources"/>
<IPermission class="EnvironmentPermission" version="1" Unrestricted="true" Name="FullTrust" Description="Allows full access to all resources"/>
<IPermission class="EnvironmentPermission" version="1" Unrestricted="true" Name="FullTrust" Description="Allows full access to all resources"/>
修该SecurityPermission
<IPermission
class="SecurityPermission"
version="1"
Unrestricted="true"
/>
class="SecurityPermission"
version="1"
Unrestricted="true"
/>