接触sharepoint这么久了,但是连个“hello world”都没做过,真的是需要检讨检讨了。
今天就来个试验,代码很容易实现,不料部署却困难重重。唉,多练习,多总结吧。
我总结:部署,是sharepoint的重点知识!
现在开始总结我的这个学习课程吧。
我本地的测试站点是http://apensu-pc:8000
1、新建一个类库工程:WebPartProject。
新建一个类文件,HelloWorld.cs
代码如下:
-------------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
namespace WebPartProject
{
public class HelloWorld: WebPart
{
Label label1 = new Label();
protected override void CreateChildControls()
{
//base.CreateChildControls();
label1.ID = "label1";
label1.Text = "Hello world, sharepoint webpart!";
this.Controls.Add(label1);
}
protected override void Render(System.Web.UI.HtmlTextWriter writer)
{
//base.Render(writer);
label1.RenderControl(writer);
}
}
}
----------------------------------------
代码很简单,但是还是有地方需要特别注意,class一定要声明是public,否则在webpart列表出不来。
就是这个小问题,调了我好久,唉,粗心。
2、到以上为止,代码先结束了。可以编译了。编译成功。在项目bin/debug生成了WebPartProject.dll。
copy WebPartProject.dll到你的sharepoint站点的bin文件夹中。
C:/inetpub/wwwroot/wss/VirtualDirectories/8000/bin 8000是端口号来的。
3、修改站点的web.config,在<SafeControls>中添加子项
<SafeControl Assembly="WebPartProject, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" Namespace="WebPartProject" TypeName="HelloWorld" Safe="True" />
同时记得更改信任等级<trust level="WSS_Medium" originUrl="" />
4、经过以上的设定,在站点http://apensu-pc:8000 》 网站操作 》 站点设置 》 web部件 》 新增
应该可以查找到新copy进去的webpart
可以找到吧,如果不可以,原因可能如下:
1)、HelloWord.cs 类名没有声明是public的
2)、还没有将dll文件copy到正确的目录下,可以在VirtualDirectories/8000/bin下也可以在_app_bin下。
3)、<SafeControl Assembly="WebPartProject, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" Namespace="WebPartProject" TypeName="HelloWorld" Safe="True" />没有写对,仔细检查一遍。
ok,如果你找到了。恭喜!选中,导入。
预览一下效果,完成。
注:如果预览时发生错误“为了成功导入,必须使用 AllowPartiallyTrustedCallersAttribute 设置来编译用于实现 ASP.NET Web 部件并安装在不完全信任位置(如 bin 目录)的程序集。”
工程中的AssemblyInfo.cs中添加代码,
using System.Security;
[assembly: AllowPartiallyTrustedCallers]
完。