我知道,以下代码看起来很幼稚,但它应该只是想到我想要实现的目标。
我的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)。但是反过来也可能吗?
答案 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,但一旦启动它就基本上被锁定了。