如何从C#-code中检索生成的值到我的web.config文件中?

时间:2015-03-24 15:24:18

标签: c# asp.net

我知道,以下代码看起来很幼稚,但它应该只是想到我想要实现的目标。

我的web.config文件:

<connectionStrings>
    <add name="ADConnectionString" connectionString="AppData.GetConnectionString()" />
</connectionStrings>

我想从C#中获取字符串:

public class AppData
{
    public static string GetConnectionString()
    {
        return "LDAP://expample.domain.com:389/DC=example,DC=domain,DC=com";
    }
}

我知道可以从C#代码中的web.config获取数据(例如AppSettings)。但是反过来也可能吗?

3 个答案:

答案 0 :(得分:0)

我不建议使用它。但你实际上可以这样做:

using System.Web.Configuration;
using System.Configuration;

var config = WebConfigurationManager.OpenWebConfiguration(null);
var connectionStringsSection = (ConnectionStringsSection)config.GetSection("connectionStrings");
connectionStringsSection.ConnectionStrings["ADConnectionString"].ConnectionString = AppData.GetConnectionString();
config.Save();

答案 1 :(得分:0)

我认为这不可能,因为它只是一个 XML文件。您在XML文件中所能做的就是添加注释,创建节点,添加属性或添加嵌套元素等但您无法添加任何代码

但我认为某些语言允许您这样做

https://stackoverflow.com/questions/24486772/write-php-code-inside-xml-file

答案 2 :(得分:0)

使用Reflection

以下是一个例子:

private string test = WebConfigurationManager.ConnectionStrings["Test"].ConnectionString; //returns "ExecuteTest" -- note! no parenthesis!

protected void Page_Load(object sender, EventArgs e)
{
    MethodInfo m = this.GetType().GetMethod(test); //expects static method
    if (m != null)
    {
        object result = m.Invoke(this, new object[] { });
    }
}

private static void ExecuteTest()
{
    //do stuff
}

但不,你不能动态编辑/拉取数据到web.config。更改web.config将导致应用程序重新启动以终止所有会话。可以在启动之前构建web.config,但一旦启动它就基本上被锁定了。