【问题标题】:LoadControl on control with assembly reference带有程序集引用的控件上的 LoadControl
【发布时间】:2010-12-10 16:11:06
【问题描述】:

我正在尝试使用 System.Web.UI.TemplateControl.LoadControl 为 SharePoint 应用程序构建模板化 Web 部件,但在引用外部程序集的控件时遇到问题。

我有一个前几行这样的用户控件:

<%@ Control Language="C#" ClassName="MyControl" %>
<%@ Assembly Name="AjaxControlToolkit" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>

Web 部件派生自实现模板的基本 Web 部件和一些其他实用程序,这些实用程序位于名为“MyWebParts”的程序集中(例如),而派生的 Web 部件类位于“MyProject”中。 MyProject 引用了“MyWebParts”(显然)和“AjaxControlToolkit”,但“MyWebParts”没有引用“AjaxControlToolkit”。在运行时,当模板化的 Web 部件尝试加载用户控件(“controltemplates”SharePoint 根文件夹中的 .ascx 文件)时,它会调用它在程序集中继承的基本方法,并引发 HttpParseException,表明它不能t 加载所需的程序集。 EventViewer 确认有问题的程序集是 AjaxControlToolkit。

我尝试将 AjaxControlToolkit 程序集添加到共享点的 web.config 中,它位于 GAC 中,但无济于事。

任何人都知道如何在不引用“MyWebParts”程序集中存在的每个程序集的情况下做到这一点?

【问题讨论】:

    标签: asp.net sharepoint user-controls web-parts


    【解决方案1】:

    在 web.config 程序集部分添加对程序集的引用,这将强制 sharepoint 将该程序集加载到内存中,如下所示:

    <assemblies>
      <add assembly="AjaxControlToolkit, Version=1.0.10920.16768, Culture=neutral, PublicKeyToken=28f01b0e84b6d53e"/>
    </assemblies>
    

    附:这是针对 ajax 1.0 的,如果您使用的是 AJAX 3.5 版本,请更正程序集版本。

    【讨论】:

    • 我试过了,但是没有用。 (这就是我上面所说的“我尝试将 AjaxControlToolkit 程序集添加到 web.config...”时的意思)。不过,感谢您的建议。
    • 有版本差异吗?因为我以前做的是将 ajaxcontroltoolkit 项目包含在我自己的 Visual Studio 项目中。似乎 ajaxcontroltoolkit 项目每次构建它时都会更新它自己的版本号(所以它会在测试中构建/运行,因为你总是引用最新版本),但如果部署它可能是你的项目引用了新版本,而ajaxcontroltoolkit 的旧版本在 GAC 中。
    猜你喜欢
    • 2011-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-12
    • 2011-07-26
    • 1970-01-01
    • 2017-10-19
    • 2015-01-22
    相关资源
    最近更新 更多