所以,我继承了一个VS项目,里面有很多Web部件。该项目有一个密码文件,密码无人知道密码是什么。所以,我创建了一个新的密钥文件,显然改变了PublicKeyToken ......
我认为将新程序集部署到GAC并将旧的PublicKeyToken替换为web.config中的SafeControl引用上的新组件可以解决问题。但是,当我访问该站点时,没有任何Web控件可以正常工作。他们都说“Web部件错误......”
以下是旧web.config safecontrol引用的示例...
这是新的...
我通过右键单击并从“c:\ windows \ assembly”gac中查看程序集的属性来获取新标记...
我做错了什么..?
答案 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
/干杯:)