我的web.config有几个页面,我们都让未经身份验证的用户查看。有没有办法在运行时循环遍历此列表?
<location path="default.aspx">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
<location path="default2.aspx">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
修改
我想要一个包含所有未经授权页面的列表,以便我可以从一些javascript代码中排除它们,这些代码会在会话即将结束时弹出提醒。
http://www.erichynds.com/examples/jquery-idle-timeout/example-mint.htm
答案 0 :(得分:1)
查看SiteMaps,可以通过授权进行修剪,并通过SiteMap.CurrentNode.ChildNodes
等循环进行迭代。您还需要维护一个SiteMap.xml
,其中包含与您的网页结构相匹配的完整网站地图,以便实现此目的。
例如,如果您的目标是专门为非授权用户生成网站导航菜单,则会有SiteMapDataSource
之类的内置控件,当与Menu
控件结合使用时,可以生成定制的菜单对于授权和非授权用户,自动为用户的当前角色授权。
答案 1 :(得分:1)
您可以使用:System.Configuration.ConfigurationLocation
示例代码显示获取ConfigurationLocationCollection。然后,您应该能够迭代该集合,获取Path属性并执行您要执行的操作。
编辑:我能够使用以下代码正确阅读web.config:
ExeConfigurationFileMap configFileMap =
new ExeConfigurationFileMap();
configFileMap.ExeConfigFilename = Server.MapPath("/web.config");
Configuration config =
ConfigurationManager.OpenMappedExeConfiguration(configFileMap, ConfigurationUserLevel.None);
ConfigurationLocationCollection myLocationCollection = config.Locations;
foreach (ConfigurationLocation myLocation in myLocationCollection) {
Response.Write(String.Format("Location Path: {0}", myLocation.Path));
Configuration myLocationConfiguration = myLocation.OpenConfiguration();
Response.Write(String.Format("Location Configuration File Path: {0}",
myLocationConfiguration.FilePath));
}
但是,正如您在评论中提到的那样,ConfigurationLocationCollection是空的!我的web.config中有6个位置条目,所以这绝对很奇怪。