部署到GAC的Web部件不起作用

时间:2009-02-14 14:50:56

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

所以,我继承了一个VS项目,里面有很多Web部件。该项目有一个密码文件,密码无人知道密码是什么。所以,我创建了一个新的密钥文件,显然改变了PublicKeyToken ......

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

以下是旧web.config safecontrol引用的示例...

这是新的...

我通过右键单击并从“c:\ windows \ assembly”gac中查看程序集的属性来获取新标记...

我做错了什么..?

7 个答案:

答案 0 :(得分:1)

safecontrol引用没有显示,但作为第一次完整性检查:您确实记得重新启动IIS(在部署到GAC时是必需的)?

答案 1 :(得分:1)

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

答案 2 :(得分:0)

听起来你做出了正确的改变,所以也许是其他的东西 您是否检查了事件日志和sharepoint日志中的错误?

答案 3 :(得分:0)

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

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

答案 4 :(得分:0)

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

除非您有令人信服的理由,否则不应将webpart部署到GAC,而应将其放在您的webapp的bin文件夹中。这就是stsadm为您提供的地方。如果你部署到GAC,你应该确保bin文件夹中没有webpart的程序集,sharepoint会对使用哪个版本 - GAC或bin感到困惑。

您应确保在webapp配置文件中将其注册为safecontrol 将ANYTHING部署到GAC时,应确保执行IISReset。

答案 5 :(得分:0)

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

答案 6 :(得分:0)

你的webparts继承了什么类?

如果使用SharePoint.WebPartPages类

,则可能会中断
public class yourWebPartClass : Microsoft.SharePoint.WebPartPages.WebPartPage

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

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

/干杯:)