【问题标题】:Web Part Deployed To GAC Not Working部署到 GAC 的 Web 部件不工作
【发布时间】:2010-10-07 15:28:38
【问题描述】:

所以,我继承了一个 VS 项目,其中包含一堆 Web 部件。该项目有一个带有密码的密钥文件,没有人知道密码是什么。所以,我创建了一个新的密钥文件,它显然改变了 PublicKeyToken...

我认为将新程序集部署到 GAC 并在 web.config 中的 SafeControl 引用中用新的 PublicKeyToken 替换旧的 PublicKeyToken 可以解决问题。但是,当我访问该站点时,没有一个 Web 控件起作用。他们都说“Web Part Error...”

这是旧 web.config 安全控制参考的示例...

这是新的...

我通过右键单击并从“c:\windows\assembly” gac 查看程序集的属性获得了新令牌...

我做错了什么..?

【问题讨论】:

    标签: c# web-parts sharepoint-2007 gac


    【解决方案1】:

    没有显示安全控制引用,但作为第一次健全性检查:您确实记得重新启动 IIS(部署到 GAC 时需要)?

    【讨论】:

      【解决方案2】:

      更改程序集的强名称意味着它会针对系统进行更改,在本例中为 SharePoint。因此,前面的 webpart 是带有未知密码的 snk 的程序集的一部分。您必须重新配置包含 old webpart 的每个页面,并放置 new webpart。

      【讨论】:

        【解决方案3】:

        听起来您做出了正确的更改,所以也许是别的东西。
        您检查过事件日志和共享点日志是否有错误?

        【讨论】:

        • 嗯...这是当我显示每个 Web 部件的错误详细信息时页面上显示的错误... C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions \12\LOGS\
        • [UnsafeControlException:无法显示或导入此页面上的 Web 部件或 Web 窗体控件。找不到该类型或未将其注册为安全类型。]
        • 在 IIS 日志中并没有真正看到很多内容。有什么我应该找的吗?
        • 我会检查您在 web.config 中的安全控件上的拼写是否与您的 Web 部件名称匹配。
        【解决方案4】:

        下载并使用 VSeWSS 1.3 扩展。它会自动为您完成所有这些工作,包括部署 :-)

        https://connect.microsoft.com/Downloads/Downloads.aspx?SiteID=428&wa=wsignin1.0

        【讨论】:

          【解决方案5】:

          有几件事你应该检查....

          除非您有令人信服的理由,否则不应将 webpart 部署到 GAC,而应将它们放在 webapp 的 bin 文件夹中。这是 stsadm 将为您放置它们的地方。如果部署到 GAC,则应确保 bin 文件夹中没有 webpart 的程序集,sharepoint 会混淆使用哪个版本 - GAC 或 bin。

          您应该确保它在您的 webapp 配置文件中注册为安全控制 将 ANYTHING 部署到 GAC 时,应确保执行 IISReset。

          【讨论】:

            【解决方案6】:

            在WSS中,模板信息被复制并嵌入到数据库中的数据中是很常见的问题。其中一个示例是 onet.xml 文件中的定义,该文件被复制到每个 Web 实例中。另一种是当用户将 web 部件添加到页面时。更改强名称通常意味着您必须重新创建已使用 Web 部件的每个站点。

            【讨论】:

              【解决方案7】:

              你的 webpart 继承了什么类?

              如果您使用 SharePoint.WebPartPages 类,内容可能会损坏

              public class yourWebPartClass : Microsoft.SharePoint.WebPartPages.WebPartPage
              

              改为使用 System.Web.UI 中的 WebControls 类

              public class yourWebPartClass : System.Web.UI.WebControls.WebParts.WebPart
              

              / 干杯:)

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2013-07-02
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2016-06-20
                相关资源
                最近更新 更多