问题标签 [portalsitemapprovider]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3259 浏览

sharepoint - PortalSiteMapProvider 导致过多的 SPRequest 对象

我们有一个自定义导航 Web 部件,它使用 MOSS 的 PortalSiteMapProvider 来构建菜单导航。Provider 似乎没有管理它的对象。关于如何管理在 Provider 中创建的对象的任何想法?

它导致像这样的日志错误:

线程 1 上当前未释放的 SPRequest 对象 (9) 可能过多。确保正确处置此对象或其父对象(例如 SPWeb 或 SPSite)。此对象的分配 ID:{56D66DBA-AE72-42DF-A70F-B45E05A60A08} 当前分配的堆栈跟踪:
在 Microsoft.SharePoint.SPRequestManager.Add(SPRequest request, Boolean shareable)
at Microsoft.SharePoint.SPGlobal.CreateSPRequestAndSetIdentity(Boolean bNotGlobalAdminCode,在Microsoft.SharePoint.SPWeb.InitializeSPRequest
()
在 Microsoft.SharePoint.SPWeb.EnsureSPRequest()
在 Microsoft.SharePoint.SPWeb.get_Request()
在 Microsoft.SharePoint.SPWeb.InitWebPublic()
在 Microsoft.SharePoint.SPWeb.get_Exists()
在 Microsoft.SharePoint.Publishing.CachedObjectFactory.CreateWebFromUrl(String url)
在 Microsoft.SharePoint.Publishing.Navigation.SPNavigationSiteMapNode..ctor(PortalWebSiteMapNode webNode , SPNavigationNode 节点, PortalSiteMapNode parentNode, NodeTypes 类型, String url, String title, String description)
在 Microsoft.SharePoint.Publishing.Navigation.SPNavigationSiteMapNode.CreateSPNavigationSiteMapNode(PortalWebSiteMapNode webNode, SPNavigationNode 节点, PortalSiteMapNode parentNode)
在 Microsoft.SharePoint.Publishing.Navigation。 PortalWebSiteMapNode.ProcessSPNavigationNode(SPNavigationNode 节点,SPNavigationNode previousSibling,PortalSiteMapNode parentNode)
在 Microsoft.SharePoint.Publishing.Navigation.PortalWebSiteMap.Node.PopulateNavigationChildren()
在 Microsoft.SharePoint.Publishing.Navigation.PortalSiteMapNode.GetNavigationChildren(NodeTypes包括类型,NodeTypes包括HiddenTypes,OrderingMethod排序,AutomaticSortingMethod方法,布尔升序,Int32 lcid)
在微软。 SharePoint.Publishing.Navigation.PortalSiteMapNode.GetNavigationChildren(NodeTypes includedHiddenTypes)
在 Microsoft.SharePoint.Publishing.Navigation.PortalSiteMapProvider.GetChildNodes(PortalSiteMapNode 节点, NodeTypes includedHiddenTypes)
在 Microsoft.SharePoint.Publishing.Navigation.PortalSiteMapProvider.GetChildNodes(SiteMapNode 节点)
在 System .Web.SiteMapNode.get_ChildNodes()
在 Microsoft.SharePoint.Publishing.Navigation.PortalHierarchicalEnumerable.System.Collections.IEnumerable.GetEnumerator()
在 System.Web.UI.WebControls.Menu.DataBindRecursive(MenuItem 节点,IHierarchicalEnumerable 枚举)
在 System.Web.UI.WebControls.Menu。 DataBindRecursive(MenuItem node, IHierarchicalEnumerable enumerable)
at System.Web.UI.WebControls.Menu.DataBindItem(MenuItem item)
at System.Web.UI.WebControls.Menu.PerformDataBinding()
at System.Web.UI.WebControls.HierarchicalDataBoundControl.PerformSelect ()
在 System.Web.UI.WebControls.BaseDataBoundControl.DataBind()
在 System.Web.UI.WebControls.Menu.DataBind()
在 System.Web.UI.WebControls.BaseDataBoundControl.EnsureDataBound()
在 System.Web.UI.WebControls.Menu.EnsureDataBound()
在 System.Web.UI.WebControls.BaseDataBoundControl.OnPreRender(EventArgs e)
在 System.Web.UI.WebControls.Menu.OnPreRender(EventArgs e, Boolean registerScript)
在System.Web.UI.WebControls.Menu.OnPreRender(EventArgs e)
在 Microsoft.SharePoint.WebControls.AspMenu.OnPreRender(EventArgs e)
在 System.Web.UI.Control.PreRenderRecursiveInternal()
在 System.Web.UI.Control。 PreRenderRecursiveInternal()
在 System.Web.UI.Control.PreRenderRecursiveInternal()
在 System.Web.UI.Control.PreRenderRecursiveInternal()
在 System.Web.UI.Control.PreRenderRecursiveInternal() 在 System.Web.UI.Control.PreRenderRecursiveInternal(
) )
在 System.Web.UI.Control.PreRenderRecursiveInternal()
在 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
在 System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
在 System.Web .UI.Page.ProcessRequest() 在 System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context)
在 System.Web.UI.Page.ProcessRequest(HttpContext context) 在 ASP.VIEWPAGE_ASPX_2077083467.ProcessRequest(HttpContext context)
在 System.Web .HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
在 System.Web.HttpApplication.ApplicationStepManager.ResumeSteps(异常错误)
在 System.Web.HttpApplication.System.Web.IHttpAsyncHandler.BeginProcessRequest(HttpCont

0 投票
1 回答
2878 浏览

sharepoint - PortalSiteMapProvider

每次我实例化一个 PortalSiteMapProvider 实例时,它总是默认为根网站集合。

我希望能够从应用程序页面的不同集合中获取站点地图。

因此,上下文默认为根 Web,因为此应用程序页面位于 _layouts 下,并且不托管在任何网站集下。

如何从应用程序页面获取除根 Web 之外的网站集的实例?

谢谢。

0 投票
1 回答
1872 浏览

asp.net - 自定义 SharePoint 导航 2 级深度

我有一个简单的站点,其中包含一个带有 2 个子站点的根站点。

现在我希望所有 3 个站点的导航完全相同并阅读:

根站点 | 子站点 1 | 子站点 2

突出显示当前选择的站点。

我几乎可以使用 asp:repeater 控件和 portalsitemapprovider 手动执行此操作。问题是我可以只获取导航上的根站点(将 ShowStartingNode 设置为 True)或只获取子站点,我无法同时获取两者。

我知道如果您使用 sharepoint:aspmenu 控件并将 staticdisplaylevels 设置为 2,您可以获得两者,但我不喜欢该控件吐出的凌乱代码。基本上,我想模拟这种包含在我自己的兼容 css 中的控件行为。有任何想法吗?

  • 另外,作为补充,是否有人对我如何拥有它有任何想法,所以如果 subsite1/2 有后续的子网站/页面,那么用户正在导航的层次结构中有多少级别并不重要,它仍然会突出显示相关的 subsite1 或子站点2?我当前的方法将 currentnode 与每个提供程序节点进行比较,以找出应该突出显示的节点,但是一旦用户离开每个子站点的登录页面,这将不起作用。

谢谢!

0 投票
1 回答
578 浏览

asp.net - PortalSiteMapprovider 代码访问安全要求

我正在使用 portalsitemapprovider 对象来创建我的导航服务器控件。

我已经在控件 CAS 中分配了共享点对象模型访问和模拟权限。但是,尽管如此,我无法检索站点地图根节点的子节点,它们只会返回错误。

如果我将 Web 应用程序更改为在完全信任下运行,我可以检索子节点。

因此,我的问题是需要哪些 CAS 策略才能完全访问站点地图提供程序对象中的数据,以及我为什么可以访问根节点而不是当前的子节点?

示例代码:

我的大会有以下 CAS 请求:

在部署清单中有适当的 IPermission 条目。部署 Web 应用程序后,web.config 按预期更新为 WSS_Custom 信任级别。

有任何想法吗?

谢谢

0 投票
1 回答
1608 浏览

sharepoint - 事件接收器中的 SPContext (PortalSiteMapProvider)

我正在尝试编写一个使用 PortalSiteMapProvider 的事件接收器。如果事件接收器内部没有 HTTPContext 或 SPContext ,如何访问 PortalSiteMapProvider?

0 投票
4 回答
5685 浏览

asp.net - SharePoint 自定义当前导航/PortalSiteMapProvider

我正在处理 SharePoint 解决方案上的自定义当前(左)导航。

我需要的是导航的根是一个变体网络,是根网络的直接子级。作为此变体的直接子级的所有站点和页面都应该可见,但不会展开。只有作为当前站点的祖先的站点才应该扩展......一直到当前站点/页面。

一个例子......如果我从页面开始,http://spsite.ex/variation/site2/subsite2.1/subsite2.1.1/subsite2.1.1.3/page.aspx我应该看到......

如果我然后单击链接,SubSite2.1我应该会看到类似...

如果我然后导航到http://spsite.ex/variation/site5/subsite5.1/page.aspx我应该看到类似...

我已经写了一个解决方案,但我觉得这不应该让我感到自豪;我给出了AspMenu一个接近无限的StaticDisplayLevels然后是扩展PortalSiteMapProvider的,覆盖GetChildNode(node)不获取子节点,除了当前网络的祖先。

0 投票
1 回答
2568 浏览

sharepoint-2010 - SharePoint 2010:将 PortalSiteMapProvider 指向特定网站集

是否可以让 OOTB PortalSiteMapProvider 提供来自SharePoint 2010 中指定网站集或 URL(即不是当前网站集)的网站层次结构?在 MOSS 中,这只能通过创建自定义 SiteMapProvider、遍历网站集并手动构建导航树来实现。

注意:我不准备编写从静态 XML (.sitemap) 文件读取的自定义 SiteMapProvider,因为常规站点贡献者可能无法访问文件系统上的文件。

一点背景知识......我有一个带有 2x 网站集的 Web 应用程序:

  • 1 用于我的 Intranet 门户http://intranet/(已启用发布)
  • 1 用于http://intranet/my上的“我的网站” (未启用发布)

我们没有计划促进多个门户网站,因此,我希望在两个网站集之间有一个一致的全局导航栏。理想情况下,我希望“我的网站”显示主门户网站的网站层次结构。那么是否可以将PortalSiteMapProvider.CurrentSite属性设置为"http://intranet/"而不是"http://intranet/my"

0 投票
1 回答
757 浏览

sharepoint-2010 - PotalSiteMapProvider 不返回页面

PotalSiteMapProvider 不返回页面。我使用如下代码:

当我通过调试器查看时,thisCollection 从来没有任何子节点,尽管 thisNode 是一个有页面的子站点节点。我做错了什么,如何获取该节点中的页面?谢谢!