2

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

我认为将新程序集部署到 GAC 并将旧的 PublicKeyToken 替换为 web.config 中 SafeControl 引用上的新程序集就可以了。但是,当我访问该站点时,没有任何 Web 控件起作用。他们都说“Web 部件错误...”

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

这是新的...

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

我究竟做错了什么..?

4

7 回答 7

1

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

于 2009-03-13T10:46:46.040 回答
1

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

于 2009-02-14T15:02:06.330 回答
0

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

于 2009-02-14T15:53:36.627 回答
0

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

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

于 2009-02-15T17:10:44.207 回答
0

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

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

你应该确保它在你的 webapp 配置文件中注册为安全控制当你将任何东西部署到 GAC 时,你应该确保执行 IISReset。

于 2009-02-15T17:21:36.693 回答
0

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

于 2009-02-15T19:18:16.943 回答
0

你的 webpart 继承了什么类?

如果您使用 SharePoint.WebPartPages 类,内容可能会中断

public class yourWebPartClass : Microsoft.SharePoint.WebPartPages.WebPartPage

而是使用 System.Web.UI 中的 WebControls 类

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

/干杯:)

于 2011-03-07T22:42:15.953 回答