Asp.net 站点地图的缺点

Asp.net 站点地图的缺点,asp.net,sitemap,Asp.net,Sitemap,我必须使用站点地图进行身份验证。我是一名经验丰富的开发人员,以前从未使用过站点地图,因此,由于范式的转变,我可能遗漏了一些东西 为了绕过SiteMap中的url限制,我巧妙地附加了一个querystring值: 页面根据querystring值动态返回适当的信息/显示,我没有多个存根页面。一切都很顺利,这似乎是个好主意,直到 经理现在希望访问该页面并编辑员工的工作别名,因此他们需要单击如下链接: href=workflow.aspx?Location=Process1&UserID=12&I

我必须使用站点地图进行身份验证。我是一名经验丰富的开发人员,以前从未使用过站点地图,因此,由于范式的转变,我可能遗漏了一些东西

为了绕过SiteMap中的url限制,我巧妙地附加了一个querystring值:

页面根据querystring值动态返回适当的信息/显示,我没有多个存根页面。一切都很顺利,这似乎是个好主意,直到

经理现在希望访问该页面并编辑员工的工作别名,因此他们需要单击如下链接:

href=workflow.aspx?Location=Process1&UserID=12&IDWorkflowLocation=3340

{更新到解释} 它正确到达页面,但是

SiteMap.CurrentNode==null

因为站点地图中已经有一个查询字符串,所以它没有正确附加。我真的不想制作唯一命名的stub.aspx页面。有什么想法吗?

试试这个:

href=workflow.aspx?Location=Process1&UserID=12&IDWorkflowLocation=3340 

您是否尝试过在运行时以编程方式修改站点地图节点?本文介绍了如何:

我以前使用过这个,但我似乎记得,sitemaprolve事件会在每个请求上触发(即使您在特定的Web表单上定义它)


希望这能有所帮助。

您需要扩展SiteMap类,重写CurrentNode属性,并在其中获取一些您自己的逻辑来捕获这些信息。

不。它到达了目标页面,但随后SiteMap.CurrentNode==null谢谢,我看了一下,但是因为SiteMap.CurrentNode属性在到达该页面时为null,所以这不起作用。显然,问题是因为SiteMap已经包含querystring,所以无法处理进一步的querystring参数。同意。重写提供程序中的CurrentNode并返回与Http请求匹配的节点。