sharepoint调试EventHandler经验小计

微软的Visual Studio 2008 开发工具为sharepoit开发带来很大的方便,特别工作流的开发调试,让你立马将Visual Studio 2005 扔到垃圾桶去。

某天,我轻易答应了一件事:

“某部门每月都要收集下面机构报上来的空白单据领用数,这是用EXCEL填报的,那么某部门就有一个人每月汇总一下这些领用表,效率可想而知是很低的。我吹嘘说这是小事一桩,于是接了这个事。”

真是说易做难,我的做法是用Infopath表单让下属机构填报,然后在后台捕捉ItemAdded和ItemDeleting事件(不让他们修改,太烦啦),在事件中登记或退回本月领用数。

调试是这样的:

1. gacutil /i MyEventHandler.dll

2. 使用SharePoint Tips Utility Pack注册事件

3. 使用vs2008附加到w3wp.exe(托管类型),打开页面开始调试。

问题出现了:

A. 程序运行跟vs2008中显示的源代码流程走向不一致,就是说符号表不对。

B. 有时附加上了w3wp.exe,但是说当前断点不会到达,这是怎么回事。

第一个问题就是w3wp.exe的.net runtime的池子里的MyEventHandler.dll跟我修改过的程序版本不一致,最简单的办法是:

     (1)gacutil   /uf   MyEventHandler

      (2)  iisreset

      (3) gacutil /i   新的dll

第二个问题后来我想明白了,就是w3wp.exe的进程空间中没有MyEventHandler.dll,那怎么才能让它有呢?办法就是想办法让它load进内存,再来附加w3wp.exe,那就可以啦。我是打开页面,填一个表单,让事件发生一次,MyEventHandler.dll就会调进内存。因为.net运行时可能会卸下MyEventHandler.dll,如果时间太长,你可能又附加不上去。

posted @ 2009-03-14 14:13  平静的心  阅读(978)  评论(3编辑  收藏  举报