如何創(chuàng)建webpart我并不想在這篇中講,具體我會(huì)另外寫一篇關(guān)于webpart開發(fā)的文章。
MOSS中的webpart與普通.net控件的不同點(diǎn):
1:webpart一般都是以類庫的形式出現(xiàn),它是沒有前端可視化頁面的,類似于asp.net中的自定義控件。
2:兩者繼承的基類不同:
1):asp.net控件的基類:System.Web.UI.WebControls.WebControl;
2):webpart的基類:System.Web.UI.WebControls.WebParts.WebPart;
3:兩者生成的文件不同,下面幾個(gè)是asp.net控件所不包含的:
1):密鑰文件;
4:MOSS中的webpart部署并不像asp.net網(wǎng)站中的一樣,控件和網(wǎng)站程序放在一起然后部署就行,我總結(jié)以個(gè)幾點(diǎn)應(yīng)該注意的地方:
1):bin目錄,在創(chuàng)建一個(gè)web application時(shí),會(huì)選擇一個(gè)端口,此時(shí)在IIS中就會(huì)創(chuàng)建一個(gè)對(duì)應(yīng)端口的網(wǎng)站目錄:Inetpub"wwwroot"wss"VirtualDirectories"20983,在這個(gè)目錄下面有兩個(gè)文件夾:_app_bin,bin,將編譯好的程序集放進(jìn)任何一個(gè)目錄即可;
2):全局程序集緩存:全局程序集緩存使各個(gè)應(yīng)用能夠共享程序集,它會(huì)被.Net運(yùn)行時(shí)自動(dòng)加載。它的位置在:[System Drive]"Windows"Assemply。 因?yàn)樗鼤?huì)強(qiáng)命名程序集,所有具體開發(fā)時(shí)不推薦這種方式。
3).指定目錄,參考第一條,bin,_app_bin,這兩個(gè)文件夾都可以用來部署程序集,MOSS還支持指定目錄方式,這需要在Web.Config中進(jìn)行配置。在<configuration>節(jié)下進(jìn)行配置:
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="bin;_app_bin;CustomBin" />
</assemblyBinding>
</runtime>
小結(jié):其實(shí)上面的方式一和方式三是同一原理,實(shí)際上可以說是兩種方式。還有一點(diǎn)就是如果想手工復(fù)制程序集到sharepoint網(wǎng)站的bin,這里有兩種簡(jiǎn)單的方式:
1:選擇項(xiàng)目-屬性-生成-更改輸出路徑到sharepoint網(wǎng)站的bin即可;
2:選擇項(xiàng)目-屬性-生成事件-增加生成事件:
BIN目錄的優(yōu)點(diǎn)和缺點(diǎn):
1:優(yōu)點(diǎn)。它是一個(gè)單獨(dú)信任位置,默認(rèn)的,代碼訪問安全級(jí)別非常低。如果想讓webpart正常運(yùn)行,一般都需要開發(fā)人員顯示的提升BIN目錄的信任級(jí)別。一個(gè)BIN目錄對(duì)應(yīng)一個(gè)web application,這樣我們可以為不同的web application創(chuàng)建不同的獨(dú)立代碼。
2:缺點(diǎn)。如果想在另外一個(gè)web 應(yīng)用中應(yīng)用此webpart,則需要重新部署。
全局程序集緩存的優(yōu)點(diǎn)和缺點(diǎn):
1:優(yōu)點(diǎn)。它是經(jīng)過簽名的程序集,信任級(jí)別最高,屬于完全信任。因?yàn)樗渴鹩谌治恢茫心軌虮凰衱eb應(yīng)用所共享。
2>:設(shè)置特殊安全屬性,如果是采用部署到bin的方式,則會(huì)存在安全性問題,如不做處理則會(huì)出現(xiàn)如圖一的情況。
原因:默認(rèn)情況下bin 目錄的代碼訪問安全權(quán)限很低,對(duì)存儲(chǔ)的webpart具有特殊的安全約束,Web 部件在執(zhí)行時(shí)不會(huì)自動(dòng)授予完全信任代碼權(quán)限。我們可以手工來設(shè)置這些屬性。
1:在web.config文件中有一個(gè)配置節(jié)trust level,是控制信任級(jí)別的,我們可以更改此配置節(jié)來提升bin目錄的安全性:trust level=Full。
2:在生成的程序集文件 assembly添加一句 [assembly: AllowPartiallyTrustedCallers()]
小結(jié):上面方法一般性地提升了信任級(jí)別,所以會(huì)授予您可能不需要的任何新權(quán)限,這樣就不如另一種創(chuàng)建新信任策略文件的方法安全。創(chuàng)建一個(gè)新的信任策略文件,將 web.config 文件指向該新文件。這種方法較為復(fù)雜,但是可以更為精確地設(shè)置 Web 部件的權(quán)限屬性。[引用MSDN],
3>:注冊(cè)控件。控件的注冊(cè)離不開web.config文件,找到SharePoint節(jié)點(diǎn),在最下面添加如下信息: (Assembly,Version,Culture,PublicKeyToken的查看方式可以通過.Net Reflector。 )
<SafeControl Assembly="WebParts.Samples, Version=1.0.0.0, Culture=neutral, PublicKeyToken=9f4da00116c38ec5" Namespace="WebParts.Samples" TypeName="*" Safe="True" />
</SafeControls>
總結(jié):
本文總結(jié)了些webpart部署時(shí)對(duì)于新手的一些困惑,雖然沒有比較深入的地方,但是學(xué)會(huì)部署webpart是MOSS編程的基本功。希望大家指點(diǎn)。
注:
本文所講的環(huán)境均為MOSS 2007。