如何以编程方式将位置元素添加到Web配置?

时间:2011-10-10 15:00:36

标签: asp.net .net c#-4.0 web-config forms-authentication

我有一个从数据库创建页面路由的应用程序。我的整个站点都使用表单身份验证进行保护,但我需要允许未经身份验证的用户访问这些路由。我不想为web.config中的路由硬编码<location>标签,因为这将使我无法使用数据库来生成路由。

有人可以帮忙吗?

4 个答案:

答案 0 :(得分:4)

谢谢大家。我找到了an answer here

基本上它涉及为每个路由创建一个文件夹,并在其中放入一个允许访问的web.config文件。这种方法需要与将RouteExistingFiles设置为false相结合,以便路由不会与文件夹混淆。

答案 1 :(得分:1)

为什么不直接在XML中进行修改,而不是使用强类型配置类?

这是一个缩写代码片段,用于演示我的一些代码中的概念,即在machine.config中进行性能IIS调优。但是,其他XML配置文件的主体是相同的。您只需创建适当的XPath语句即可完成所需的操作。

XmlDocument machineConfigFile = new XmlDocument();
machineConfigFile.Load(MachineConfigPathString);

XmlNode autoConfig = machineConfigFile.SelectSingleNode(@"/configuration/system.web/processModel/@autoConfig");
autoConfig.Value = "false";

machineConfigFile.Save(MachineConfigPathString);

保存后,XmlDocument对象将保留所有其他未更改的文档节点。非常便利。它非常适合修改machine.config。我能看到的唯一可能的问题是,当您将更改保存到web.config时,您的应用程序可能会重置。因此,在安全的环境中使用web.config的备份进行测试,以防重置导致任何不良后果!

答案 2 :(得分:0)

我找到了this MSDN link给你。我没有发现你是否可以这样修改运行服务器实例的配置。

答案 3 :(得分:0)

您是否考虑过以不同方式诋毁您的网站安全?让站点的一部分允许未经身份验证的访问,而部分则不允许。我正在“假设”(糟糕)您正在使用MVC,因为您正在描述路由 - 这对于MVC和传统的Web表单应用程序来说都非常容易。