Tag: sharepoint 2007

SPRequestContext缓存SPSites导致RPC_E_ATTEMPTED_MULTITHREAD错误的解决方案?

我正在为SharePoint 2007开发一个解决方案,我正在使用SPSecurity.RunWithElevatedPrivileges,传入SystemAccount的UserToken。 看了http://hristopavlov.wordpress.com/2009/01/19/understanding-sharepoint-sprequest/后我终于明白了为什么我得到这些System.Runtime.InteropServices.COMException(0x80010102):试图拨打更多电话单线程模式下的一个线程。 (来自HRESULT的exception:0x80010102(RPC_E_ATTEMPTED_MULTITHREAD))错误,但似乎没有解决方案 – “产品中的已知问题” 这篇文章已经有一年多了。 我无法找到更新的和有用的东西,但我希望也许其他人有? 我的代码是这样的 SPSecurity.RunWithElevatedPrivileges(delegate() { using (SPSite elevatedSite = new SPSite(web.Site.ID, web.Site.SystemAccount.UserToken)) { using (SPWeb elevatedWeb = elevatedSite.OpenWeb(web.ID)) { // some operations on lists and items obtained through elevatedWeb } } } 在使用这种提升的代码的地方出现错误,更常见的是当有更多用户使用这些function时,我猜也许升级的SPSite会被缓存并重用。 有什么方法可以解决这个问题吗? 如果我的理解是正确的,如何让Sharepoint忘记缓存的SPSites,并使用一个新的SPSites? 谢谢

以编程方式将ScriptManager添加到页面?

我正在开发一个WebPart(它将在SharePoint环境中使用,虽然它不使用对象模型)我想要公开AJAXfunction。由于环境的性质,直接向页面添加脚本管理器是不是一个选项,因此必须以编程方式添加。 我试图将ScriptManager控件添加到我的webpart代码中的页面。 protected override void CreateChildControls() { if (ScriptManager.GetCurrent(Page) == null) { ScriptManager sMgr = new ScriptManager(); // Ensure the ScriptManager is the first control. Page.Form.Controls.AddAt(0, sMgr); } } 但是,执行此代码时,我收到以下错误消息: “在DataBind,Init,Load,PreRender或Unload阶段,无法修改控件集合。” 是否有另一种方法将ScriptManager从WebPart添加到页面中,或者我只需要将ScriptManager添加到将使用WebPart的每个页面(或母版页)?

方括号在下面的代码中是什么意思?

我从http://msdn.microsoft.com/en-us/library/dd584174(office.11​​).aspx获取以下代码,用于在webpart工具窗格中添加自定义属性。 方括号( [] )在下面的代码中的含义是什么? [Category(“Custom Properties”)] [WebPartStorage(Storage.Personal)] [FriendlyNameAttribute(“Custom Color”)] [Description(“Select a color from the dropdown list.”)] [Browsable(true)] [XmlElement(typeof(System.Drawing.KnownColor))] public System.Drawing.KnownColor MyColor { get { return _myColor; } set { _myColor = value; } }