zoukankan      html  css  js  c++  java
  • GAC中部署assembly的问题总结

    困扰我几天的问题,终于解决了。
    将这个问题总结一下,共享出来。可能会对其他人有用。

    问题是这样的,我开发了一个基于sharepoint文档库事件的工作流WorkFlow,因为开发使用的是一台winxp的计算机,而sharepoint则在另一台计算机,要将workflow的dll部置到SharePoint所在计算机的GAC中。我使用windows资源管理器直接拖到SharePoint所在服务器GAC文件夹下。其它启用SharePoint文档库事件和设置不是这里的主题,这里先跳过。在使用文档库时触发文档库事件,没有任何反应,window事件日志中提示:无法实例化事件处理器 ……。

    原因分析:因为我直接使用网上邻居将dll拖到服务器的GAC中,在GAC中看到有WorkFlow.dll的注册,查看其属性才发现“基本代码”这一行指向的是网上邻居的地址。我将Dll复制到服务器的本地硬盘,再重新将其拖到GAC中,再经过一番折腾,问题解决。

    所以我猜测GAC中的dll注册,存储的只是assembly一个引用,实际调用还是使用“基本代码”指向的dll。而我一直以为的是dll直接保存在GAC目录中。sharepoint在运行时访问不到我注册的dll,所以提示无法实例化。以后在注册assembly到GAC时,一定要先复制到本地,再注册。

    另外,Sharepoint对GAC的assembly好像有缓存,我在覆盖GAC中的assembly,再IISRESET没作用,如果原来错话的还是错。只有先删除GAC的assembly,然后进行IISreset,再到SPS的文档库中指定事件处理程序的地方确定,Sharepoint会报错,此时再将新的assembly拖到GAC中,程序运行就对了。不知道实际是否是这样。。

    以上我实际问题的总结,如有错误,还望各位仁兄指点。

  • 相关阅读:
    OD: Kernel Vulnerabilities
    newInstance()和new的区别
    原型模式
    工厂模式
    代理模式
    策略模式
    简单工厂模式
    C#操作符的重载
    旅行之舌尖上的中国
    模式和原则[转载]
  • 原文地址:https://www.cnblogs.com/baoposhou/p/321011.html
Copyright © 2011-2022 走看看