先来一段测试代码
protected override void CreateChildControls()
{
try
{
Microsoft.Web.UI.WebControls.TreeView myTreeview = new Microsoft.Web.UI.WebControls.TreeView();
Microsoft.Web.UI.WebControls.TreeNode myNode = new Microsoft.Web.UI.WebControls.TreeNode();
myNode.Text ="try it";
Microsoft.Web.UI.WebControls.TreeNode myNode2 = new Microsoft.Web.UI.WebControls.TreeNode();
myNode2.Text ="OK!";
myNode.Nodes.Add(myNode2);
myTreeview.Nodes.Add(myNode);
this.Controls.Add(myTreeview);
}
catch
{
throw;
//this.text = ex.Message;
}
}
{
try
{
Microsoft.Web.UI.WebControls.TreeView myTreeview = new Microsoft.Web.UI.WebControls.TreeView();
Microsoft.Web.UI.WebControls.TreeNode myNode = new Microsoft.Web.UI.WebControls.TreeNode();
myNode.Text ="try it";
Microsoft.Web.UI.WebControls.TreeNode myNode2 = new Microsoft.Web.UI.WebControls.TreeNode();
myNode2.Text ="OK!";
myNode.Nodes.Add(myNode2);
myTreeview.Nodes.Add(myNode);
this.Controls.Add(myTreeview);
}
catch
{
throw;
//this.text = ex.Message;
}
}
编译,将相关dllcopy到服务器wwwroot/bin下面。
加载webpart,结果出错。
想来还有treeview的客户端支持目录没有拷过去,
在wwwroot下面copy过去
webctrl_client
〔这些都是下载了微软ie webcontrols后安装生成的。〕
对了wss对虚拟目录具有控制权,要排除这个目录
wss管理器中(开始菜单->管理工具-》sharepoint centrl administration)中
config virtual server
->选择wss虚拟服务器
-》define managed paths
将webctrl_client 排除
注意前提是你已经将webctrl_client 拷贝到wwwroot/目录下面,同时设置成为虚拟目录了。
接着再try
发现一个错误:
FileIOPermission failed...................
晕,又是权限。
打开web.config
找到
<trust level="WSS_Minimal" originUrl="" />
改成
<trust level="Full" originUrl="" />
Let's Go!
运行成功!
其实,最好不要设置trust level 为full,
我们可以修改WSS_Minimal的配置, 添加如下代码
<SecurityClass Name="FileIOPermission" Description="System.Security.Permissions.FileIOPermission, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<IPermission class="FileIOPermission" version="1" Unrestricted="true" />
收工。