惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

罗磊的独立博客
Cisco Talos Blog
Cisco Talos Blog
C
Check Point Blog
博客园_首页
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Martin Fowler
Martin Fowler
Recorded Future
Recorded Future
S
Security @ Cisco Blogs
L
LINUX DO - 最新话题
博客园 - 司徒正美
P
Privacy International News Feed
G
Google Developers Blog
I
Intezer
Hacker News - Newest:
Hacker News - Newest: "LLM"
博客园 - 聂微东
The GitHub Blog
The GitHub Blog
C
Cybersecurity and Infrastructure Security Agency CISA
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Scott Helme
Scott Helme
K
Kaspersky official blog
I
InfoQ
Y
Y Combinator Blog
T
The Blog of Author Tim Ferriss
Webroot Blog
Webroot Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
大猫的无限游戏
大猫的无限游戏
D
Docker
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
W
WeLiveSecurity
Microsoft Azure Blog
Microsoft Azure Blog
Spread Privacy
Spread Privacy
量子位
H
Hacker News: Front Page
Simon Willison's Weblog
Simon Willison's Weblog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
SecWiki News
SecWiki News
S
Security Affairs
Latest news
Latest news
人人都是产品经理
人人都是产品经理
C
CERT Recently Published Vulnerability Notes
S
Security Archives - TechRepublic
V
Visual Studio Blog
T
Troy Hunt's Blog
S
Secure Thoughts
F
Fortinet All Blogs
V
V2EX
The Register - Security
The Register - Security
J
Java Code Geeks
MongoDB | Blog
MongoDB | Blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO

博客园 - Razor#

Biztalk SQL 适配器之数据类型支持 Biztalk 32Bit or 64Bit ?Event ID 5754 Sharepoint 开发心得No.4: [转载]Feature.xml文件介绍 Sharepoint 开发心得No.3: 自定义列(Field)开发 Sharepoint 开发心得No.2: 列表(文档库)列宽设置 Sharepoint 开发心得No.1: 列表(文档库)级别是否可见设置 - Razor# How to install Application Templates on WSS3.0 VS2008发布Sharepoint工作流时Infopath模板问题 Contact Selector控件 Biztalk 2006基础认知 字符编码格式小结(ASCII/Unicode/UTF-8) Sharepoint 2007 Sdk常用基础操作 Sharepoint 2007部署Webpart的方式(二):STSDEV开发dotnet 3.5的webpart Windows SharePoint Services 3.0 Service Pack 1 VS2008构建MOSS表单工作流 MOSS 工作流开发中关于Workflow.xml feature.xml Sharepoint 工作流基础 InfoPath2007 创建安全的数字证书模板发布(Domain Certificate Authority Signing InfoPath 2007 Forms) 用证书实现windows 2003下IIS的SSL安全通信
Sharepoint2007 部署Webpart的方式(一)
Razor# · 2008-04-29 · via 博客园 - Razor#

首先我们新建一个class library,因为一个webpart说到底就是继承自某个基类的子类。建立了项目之后,需要添加Microsoft.Sharepoint.dll的引用,这个dll默认位于C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\ISAPI,如下图:

    

    然后继承Microsoft.Sharepoint.WebPartPages.WebPart这个类,重写里面的RenderWebPart(System.Web.UI.HtmlTextWriter output)方法,然后编译,就OK了。

    编译完后,就生成一个dll,下面就是部署的问题了,确切的说,Sharepoint2007里面的webpart部署还是值得研究的。

    第一种部署方式是部署到bin目录里面,这种方式部署的webpart只能归当前的虚拟服务器使用;第二种方式则是部署到GAC里面,这样部署的webpart则可以在所有的虚拟服务器中使用,并且还具有较高的效率。我们先说第一种方式:

    第一步拷贝dll文件:在打开虚拟服务器的根目录,比如c:\inetpub\www,然后新建一个bin目录,和Sharepoint2003不同,默认的时候bin目录不存在。然后将dll拷贝到bin下。

    第二步是修改web.config,加上你的程序集的描述。本例就是“”

    第三步是建立描述文件:描述文件的建立有着很大的学问,在Sharepoint2007中,存在两种webpart的描述文件,一种扩展名为.webpart,另一种扩展名为.dwp,.dwp的使用方法和Sharepoint2003的dwp相同。.dwp的出现主要是为了能够和上一版本兼容,现在建议使用.webpart描述文件。

    描述文件你可以放在两个地方(实际上应该还有第三个地方可放,暂不述),第一个地方是webpart gallery,第二个地方是虚拟服务器根目录下的wpcatalog目录。.dwp和.webpart两种文件的使用方法完全一样。

    当加入到wpcatalog时,需要重启一下应用(随便修改一下web.config就可以重启应用)。当重启应用后,Sharepoint2007会读取wpcatalog中的文件,然后加载到内存以供我们选择。这时webpart就部署好了。这种方式的最大问题是你必须自己写描述文件,而不能自动生成,所以我还要介绍另一种方式。就是放在webpart gallery中。

    第二种方式放在webpart gallery中,这是sharepoint2007内置的一个文档库,放在这里面的一个好处是不用重启应用,当你将描述文件加入到这里面是,你就可以直接在添加webpart的列表中看到新增加的webpart了。除了手工的上传.dwp或者.webpart描述文件到webpart gallery中,还可以自动生成。自动生成取决于两个条件,第一个是你的dll已经拷贝到正确的位置,第二个是web.config中已经加入了描述,缺一不可。当这两个条件满足后,选择webpart gallery上的New按钮,就会列出你新部署的webpart。webpart gallery的位置在主页的action下来菜单中,选择Site Settings -> Modify All Settings,然后选择webpart,就会进入到webpart gallary。

    

    选中后,点击上面的Populate Gallery按钮,就会把自动生成的描述文件添加到webpart gallery中。

    

    这里要注意的是,如果你的dll是sharepoint2003的webpart(也即.NET1.1的程序集),会自动生成.dwp描述文件。如果你是.NET2.0的程序集,也即Sharepoint2007的webpart,则会生成.webpart描述文件。

    另外一个问题,即强签名的程序集,如果你要部署到GAC中,则只要把dll拷贝到GAC里面即可,其它步骤都相同,不同的仅仅是dll放的位置。当你要放入到GAC中时,你必须对程序集进行签名,也即制作一个强签名程序集。使用sn -k outfile来生成key。但是如果你把强签名的程序集放入到bin目录中而不是放入到GAC里面的时候,你有时就会发现出现这么一个对话框:

    

    这是因为程序集被安装在了一个被部分信任的区域,如何解决这一个问题呢?有两个方法,一是使用dwp文件描述,当你使用dwp文件描述的时候,无论dwp文件在webpart gallery中还是在wpcatalog中,都不会有这个对话框出现,webpart可以正常使用。第二种则是对程序集进行一个声明,在AssemblyInfo.cs文件中加上一句“[assembly: System.Security.AllowPartiallyTrustedCallers()]”,然后使用.webpart描述文件就没有问题了,无论这个文件放在webpart gallery中还是wpcatalog中,所以这个声明也仅对.webpart的描述文件才有效。这里你还会发现一个有趣的现象,当你使用了强签名后,无论是自动生成的.webpart文件还是直接上传到webpart gallery中的.webpart文件,里面的PublicKeyToken都会变成null,这点很奇怪。我也没有想明白是怎么回事,但是这个不影响webpart的使用。

    另外还有一点要注意的是,当部署到GAC里面的时候,在webpart gallery中New的时候,无法自动生成.webpart文件,所以需要手写。在你下载的sample里面,包含了所有的代码及.dwp和.webpart的描述文件各一个以供参考。部署完的webpart应该是这个样子: