2011-05-12 65 views
0

可能重复:
How get web config location element?如何获取允许来自web.config的所有用户的页面列表?

我的web.config有我们alllow未授权的用户查看了几页。有没有办法在运行时循环访问这个列表?

<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代码exlude他们。

http://www.erichynds.com/examples/jquery-idle-timeout/example-mint.htm

回答

1

考查SiteMaps,其可以通过授权进行修整,并通过像SiteMap.CurrentNode.ChildNodes循环迭代。您还需要使用与您的页面结构匹配的完整站点地图来维护SiteMap.xml才能使其工作。

如果,例如,你的目标是明确产生一个站点导航菜单对于非授权用户,则有像SiteMapDataSource内置控件,当其与Menu控制可以自动生成适合于用户的当前角色授权的菜单相结合,对于授权用户和非授权用户都是如此。

+0

我想获取所有未经授权的页面的列表,以便我们可以将它们从会话超时前60秒弹出的一些JavaScript代码中排除。 – guanome 2011-05-12 17:45:51

+0

我添加了一个JavaScript的例子。 – guanome 2011-05-12 17:47:48

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个位置条目,所以这是非常奇怪的。

+0

我尝试了他们的代码,并且我能够将web.config文件加载到一个“config”变量中,但位置值为空。 – guanome 2011-05-12 18:48:55

+0

是的,我只是试过。调试器显示它寻找'web.config.config',这就是为什么该集合是空的。奇怪...如果你没有传入特定的名字'web.config',它会发送一个消息。它与ConfigurationManager方法有关。它不能像Web应用的OpenExeConfiguration一样。 – 2011-05-12 19:07:02

+0

好的,我做了一些更多的搜索。有同样的问题[这里](http://stackoverflow.com/questions/4156534/how-get-web-config-location-element)。与我一样的答案有票,但我们已经表明它不能正常工作。查看接受的答案。它可能会帮助你。 – 2011-05-12 19:29:17

相关问题