我创建了一个直接映射到ConfigSectionweb的类.配置.我的课程定义如下:
public class myConfiguration: ConfigurationSection
{
public myConfiguration()
{
//
// TODO: Add constructor logic here
//
}
[ConfigurationProperty("fileName", IsRequired = true)]
public string FileName
{
get { return this["fileName"] as string; }
}
[ConfigurationProperty("rootNode", IsRequired = true)]
public string RootNode
{
get { return this["rootNode"] as string; }
}
[ConfigurationProperty("childNode", IsRequired = true)]
public string ChildNode
{
get { return this["childNode"] as string; }
}
[ConfigurationProperty("comparableAttributes", IsRequired = true)]
public string ComparableAttributes
{
get
{ return this["comparableAttributes"] as string; }
}
}
Run Code Online (Sandbox Code Playgroud)
我在web.config文件中创建了如下部分:
<configSections>
<section name="myConfigDemo" type="myConfiguration"/>
</configSections>
Run Code Online (Sandbox Code Playgroud)
然后我用这个部分作为
<myConfigDemo fileName="myXml.xml" rootNode="world" childNode="country" comparableAttributes="id, population">
</myConfigDemo>
Run Code Online (Sandbox Code Playgroud)
现在的问题是如何fileName = "anotherFile.xml"在运行时分配?我试过了
[ConfigurationProperty("fileName", IsRequired = true)]
public string FileName
{
get { return this["fileName"] as string; }
set {
string str = this["fileName"] as string;
str = value; }
}
Run Code Online (Sandbox Code Playgroud)
但我的Visual Studio让我的电脑挂起我使用上面的代码!我知道这个属性只是你只使用get但是set让我的电脑挂起!我该怎么做才能更改文件名运行时?
小智 2
有些 .net 类旨在更准确地访问 .config 文件中几乎所有内容(而不仅仅是 appSettings 或 ConnectionStrings 元素);此处的文档:http ://msdn.microsoft.com/en-us/library/x1et32w6.aspx
不过,我不确定他们是否提供了更改值的方法(看一下)。然而,有一个问题:配置文件旨在在启动时配置应用程序;换句话说,应用程序在启动时读取文件,如果手动或通过进程更改,则再次读取该文件。对于 ASP.NET 应用程序,这意味着应用程序将自动重新启动(默认情况下;IIS 设置)。
如果您确实想在运行时重新配置应用程序,则每次保存文件时都会强制它重新启动。因此,在这种情况下,请编写代码以在内存中进行所有更改(例如,通过使用 xml 类),然后立即保存所有更改。
应用程序池中有一个设置可以禁用配置更改时自动重新启动;但是,如果您这样做,当您进行配置更改时,应用程序将不会重新启动,并且您必须编写代码来重新启动它,以使其接受这些更改。
如果您想自动将自定义配置类序列化为 xml 元素,这个类可能是您的朋友:http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlserializer.aspx
我希望这有帮助。
| 归档时间: |
|
| 查看次数: |
3549 次 |
| 最近记录: |