【问题标题】:Deploying SharePoint Event Receiver Assembly to Web Application BIN将 SharePoint 事件接​​收器程序集部署到 Web 应用程序 BIN
【发布时间】:2010-12-26 11:36:19
【问题描述】:

是否可以成功地将包含自定义 SharePoint 列表功能的事件处理程序的程序集(因此,依赖于 Microsoft.SharePoint 程序集的类)部署到 Web 应用程序的 bin 而不是 GAC?

这样做的选项肯定出现在我的功能的 manifest.xml 文件中的 XML 标记中。但是,我看到一些参考资料表明,为程序集部署 CAS 策略是必须的,几乎没有关于如何为需要访问 SharePoint 对象模型等权限的程序集成功实现这一点的说明。我还看到讨论表明,由于 CAS 的困难/问题,GAC 几乎是一项要求。

我已经能够将程序集实际部署到文件夹中。然而,安全问题一直是一个很大的障碍。我能够让我的程序集运行(而不是简单地出现异常)的唯一方法是将 web.config 的信任级别提升到 <trust level="Full" originUrl="">,这在我的环境中不会运行。我希望在我继续与 CAS 进一步搏斗之前验证我正在尝试做的事情是否可行。

如果这是可能的,如果有人有指导或资源可以帮助我修改我的功能以以这种方式部署我的事件处理程序,我将不胜感激。

【问题讨论】:

    标签: sharepoint sharepoint-2007 sharepoint-feature


    【解决方案1】:

    不要提升 web.config 的信任级别 - 一个小问题的大锤。您必须在 WSP 中打包自定义 CAS 策略,以授予您的程序集 web.config 赋予它的更高权限。

    -奥辛

    【讨论】:

      【解决方案2】:

      解决此问题的一种方法是启动日志记录,记录引发的各种异常,然后手动编写 CAS 策略。这是一种非常概率性的方法,而且相当痛苦。

      似乎任何给定方法或类的所有权限要求都是预先知道的。如果是这样,应该可以编写一个工具来静态分析您的代码和依赖程序集并编写所需的 CAS 文件。不幸的是,我不知道有任何工具可以做到这一点。

      就其价值而言,GAC 对您的程序集进行管理似乎比提高信任级别“轻松”得多。

      【讨论】:

        【解决方案3】:

        如果我的问题没有错,您想将列表事件接收器部署到 Web 应用程序的 BIN 目录。

        这在 SharePoint 2010 中是不可能的,但我不知道 MOSS 2007 是否支持它(我猜它也不支持)。

        此行为是设计使然,因为 SharePoint 在内部使用 System.Reflection.Assembly.Load() 方法来加载事件接收器程序集。 Load() 方法仅适用于完全限定的程序集名称,因此要求程序集驻留在全局程序集缓存中。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-01-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多