能否从控制台应用程序中加载web-config文件?

5
我的问题很简单。我有一个第三方库,假定它将用于网站中(需要在web.config中进行特殊配置)。我想在C#控制台应用程序中使用这个库。这可能吗?
我尝试过使用WebConfigurationManager.OpenWebConfiguration()以及将所有内容复制到app.config中,但都不起作用。我收到的错误是ConfigurationErrorsException,指出:
"An error occurred creating the configuration section handler for ...: Could not load type 'Configuration.RenderingSection' from assembly 'System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'."
2个回答

4

你可以通过 AppDomain.CurrentDomain.SetData(string name, Object data) 来设置 APP_CONFIG_FILE

string webconfigPath = "whatever......../web.config");
string webconfigDir = Path.GetDirectoryName(configPath);

AppDomain.CurrentDomain.SetData("APPBASE", webconfigDir);
AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE", webconfigPath);

这很容易,您可以在控制台应用程序(cron)和Web应用程序中获得相同的设置。


1
简单明了。我建议您更改提供的示例,使用实际的伪路径来代替“whatever......./web.config”。这样可以更清晰地表达。 - Loligans
@Loligans 我不知道实际路径。我猜它取决于你的项目相对位置。 - Tomas Kubes

0
使用 app.config 替代。

与 web.config 完全相同的语法、选项等,但适用于控制台和 WinForms 应用程序。

此外,请查看 这里,虽然我没有测试过,但似乎对那个人有效。但是,如果您的项目与 Web 无关,我仍建议使用 app.config。


5
为同一个设置拥有大量的.config文件并不是一个好主意。当网站和控制台应用程序一起部署时,将所有设置集中在单个文件中是明智之举。考虑一个依赖于控制台应用程序启动定期批处理过程的Web系统的情况。 - Yván Ecarri
@YvánEcarri,你知道如何在应用程序之间共享配置文件吗?这正是我所拥有的设置,但我无法使其工作... - Snickbrack

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接