gpt4 book ai didi

.net - 是否必须在 GAC 中安装 SharePoint 事件接​​收器,如果是,所有相关程序集也必须安装?

转载 作者:行者123 更新时间:2023-12-04 17:13:00 25 4
gpt4 key购买 nike

我的公司发布了一个产品,它在 SPLists 上注册 SharePoint EventReceiver,监控更改。我一直在 GAC 中注册它,它运行得很好。但是,我们的一位客户对我们在 GAC 中安装的程序集表示不满,并希望我们将二进制文件移动到 SharePoint BIN 目录,并执行该方案工作所需的其他安全/信任伏都教。

当我尝试注册不在 GAC 中的事件接收器时,我收到非常具体的异常,其消息为:“事件接收器程序集不在 GAC 中。”我将此解释为 SharePoint 要求在 GAC 中安装事件接收器。此外,我在 MSDN 上找到了这个:http://msdn.microsoft.com/en-us/library/ff407965.aspx :“事件接收器和处理事件”部分说明

SharePoint Foundation event handlers are a compiled module of custom managed code whose invocation is triggered by a specified event that you have specified. Event handler code is compiled into a .dll file and deployed to the GAC.



这再次暗示但并未完全说明 GAC 安装是必需的。是否有人确切知道这个问题的答案,以便我可以回到客户那里解释我们的 GAC 要求?

现在的后续问题是:如果我在 GAC 中有一个程序集,并且我“静态链接”到其他程序集——即我没有使用 Assembly.Load() 显式地动态加载它们——那么那些其他程序集也必须驻留在 GAC 中?

最佳答案

事件接收器程序集不能仅安装在“bin”中,因为这样 .net 框架无法找到它们。

当您的程序集从“b​​in”加载时,这是因为程序集加载器使用探测来定位程序集。首先在 GAC 中查找,然后在当前工作目录下查找名为“bin”的目录。

因此,您用于运行 Web 界面的所有代码 - ASPX 页面、Web 服务等的代码隐藏都可以放在 inetpub..../bin 中,因为您的 Web 应用程序的工作目录在那里。

但是,工作流和计划的“计时器作业”由 OWSTIMER.exe(一种 Windows 服务)执行。作为典型的 Windows 服务,它的工作目录位于 c:\windows 中。

这意味着,如果您将程序集放在 inetpub...\bin 中的某个位置,则 owstimer 将找不到它。

因此,必须将事件处理程序等共享程序集部署到 GAC。

关于.net - 是否必须在 GAC 中安装 SharePoint 事件接​​收器,如果是,所有相关程序集也必须安装?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4621468/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com