Chinaunix首页 | 论坛 | 博客
  • 博客访问: 8236881
  • 博文数量: 444
  • 博客积分: 10593
  • 博客等级: 上将
  • 技术积分: 3852
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-09 15:26
文章分类

全部博文(444)

文章存档

2014年(1)

2013年(10)

2012年(18)

2011年(35)

2010年(125)

2009年(108)

2008年(52)

2007年(72)

2006年(23)

分类: 系统运维

2010-05-27 17:19:38

由于近期项目的需要,我开始学习MOSS编程,刚开始接触的时候觉的特别的别扭,觉的没有自己全新创建的web application来的自由,但是MOSS还是有很多优点的,这篇我先说下自定义webpart的部署问题。

  如何创建webpart我并不想在这篇中讲,具体我会另外写一篇关于webpart开发的文章。

  MOSS中的webpart与普通.net控件的不同点:

  1:webpart一般都是以类库的形式出现,它是没有前端可视化页面的,类似于asp.net中的自定义控件。

  2:两者继承的基类不同:

  1):asp.net控件的基类:System.Web.UI.WebControls.WebControl;

  2):webpart的基类:System.Web.UI.WebControls.WebParts.WebPart;

  3:两者生成的文件不同,下面几个是asp.net控件所不包含的:

  1):密钥文件;

  2):每个 Web 部件都应有一个 .webpart 文件,还有一个描述 Web 部件的 XML 文件。这是webpart独有的特征。

  4:MOSS中的webpart部署并不像asp.net网站中的一样,控件和网站程序放在一起然后部署就行,我总结以个几点应该注意的地方:

  1>:首先把生成的webpart的dll文件复制到sharepoint网站对应的目录中,而程序集的部署分以下几种方式:

  1):bin目录,在创建一个web application时,会选择一个端口,此时在IIS中就会创建一个对应端口的网站目录:Inetpub"wwwroot"wss"VirtualDirectories"20983,在这个目录下面有两个文件夹:_app_bin,bin,将编译好的程序集放进任何一个目录即可;

  2):全局程序集缓存:全局程序集缓存使各个应用能够共享程序集,它会被.Net运行时自动加载。它的位置在:[System Drive]"Windows"Assemply。 因为它会强命名程序集,所有具体开发时不推荐这种方式。

3).指定目录,参考第一条,bin,_app_bin,这两个文件夹都可以用来部署程序集,MOSS还支持指定目录方式,这需要在Web.Config中进行配置。在节下进行配置:

 
   
    
   
 

  小结:其实上面的方式一和方式三是同一原理,实际上可以说是两种方式。还有一点就是如果想手工复制程序集到sharepoint网站的bin,这里有两种简单的方式:

   1:选择项目-属性-生成-更改输出路径到sharepoint网站的bin即可;

   2:选择项目-属性-生成事件-增加生成事件:

copy"$(TargetPath)""E:"Inetpub"wwwroot"wss"VirtualDirectories"20983"bin"

  BIN目录的优点和缺点:

  1:优点。它是一个单独信任位置,默认的,代码访问安全级别非常低。如果想让webpart正常运行,一般都需要开发人员显示的提升BIN目录的信任级别。一个BIN目录对应一个web application,这样我们可以为不同的web application创建不同的独立代码。

  2:缺点。如果想在另外一个web 应用中应用此webpart,则需要重新部署。

  全局程序集缓存的优点和缺点:

  1:优点。它是经过签名的程序集,信任级别最高,属于完全信任。因为它部署于全局位置,所有能够被所有web应用所共享。

   2:缺点。由于它是完全信任,所以它失去了相应的防御措施。

  2>:设置特殊安全属性,如果是采用部署到bin的方式,则会存在安全性问题,如不做处理则会出现如图一的情况。

如果添加webpart的时候提示:信任问题导致无法添加

原因:默认情况下bin 目录的代码访问安全权限很低,对存储的webpart具有特殊的安全约束,Web 部件在执行时不会自动授予完全信任代码权限。我们可以手工来设置这些属性。

  1:在web.config文件中有一个配置节trust level,是控制信任级别的,我们可以更改此配置节来提升bin目录的安全性:trust level=Full。

  2:在生成的程序集文件 assembly添加一句 [assembly: AllowPartiallyTrustedCallers()]

  小结:上面方法一般性地提升了信任级别,所以会授予您可能不需要的任何新权限,这样就不如另一种创建新信任策略文件的方法安全。创建一个新的信任策略文件,将 web.config 文件指向该新文件。这种方法较为复杂,但是可以更为精确地设置 Web 部件的权限属性。[引用MSDN],

  3>:注册控件。控件的注册离不开web.config文件,找到SharePoint节点,在最下面添加如下信息: (Assembly,Version,Culture,PublicKeyToken的查看方式可以通过.Net Reflector。 )


  
  
     4>:导入到Webpart部件库。网站操作-网站设置-修改所有网站设置-库-web部件-新建-选中刚才创建的webpart-点击“导入库”-在页面中添加webpart即可。

  总结:

  本文总结了些webpart部署时对于新手的一些困惑,虽然没有比较深入的地方,但是学会部署webpart是MOSS编程的基本功。希望大家指点。

  注:

  本文所讲的环境均为MOSS 2007。

阅读(834) | 评论(0) | 转发(0) |
0

上一篇:阴天

下一篇:添加事件处理程序

给主人留下些什么吧!~~