我的配置应用程序从用户收集文化。在用户进行选择后捕获它。
CultureInfo culture = new CultureInfo(selectedCulture);
现在,我需要更新主应用程序的Web.config。目前,默认为en-us
:
<system.web>
...
<globalization culture="en-us" responseEncoding="utf-8" />
...
</system.web>
这是我到目前为止所管理的内容,我未能通过TODO突出显示该部分。
XmlDocument config = new XmlDocument();
config.Load("C:\\inetpub\\wwwroot\\MyProject\\web.config");
// TODO - Modify the globalization culture
config.Save("C:\\inetpub\\wwwroot\\MyProject\\web.config");
我看到了按ID抓取元素的方法,但我的全球化并没有ID。当我试图给它一个ID时,我得到The "id" attribute is not allowed.
什么方法会以允许我改变文化的方式操纵全球化元素?我是否需要使用其他结构来加载文档?
答案 0 :(得分:2)
您可以使用Xpath查找元素,然后更新数据:
XmlDocument config = new XmlDocument();
config.Load("C:\\inetpub\\wwwroot\\MyProject\\web.config");
var node = config.SelectNodes("system.web/globalization")[0];
node.Attributes["culture"].Value = "new value";
config.Save("C:\\inetpub\\wwwroot\\MyProject\\web.config");
答案 1 :(得分:0)
您需要考虑:如果您修改了web.config,ASP.NET将重新启动您的应用程序。
除此之外,您可以在web.config中设置全球化,例如:
<system.web>
...
<globalization culture="auto" responseEncoding="utf-8" />
...
</system.web>
然后,你可以像@ luke-mcgregor所说的那样使用Thread.CurrentCulture
来检索用户的文化