当我使用网络应用程序时,下面的代码行
Configuration objConfig =
ConfigurationManager.OpenExeConfiguration( ConfigurationUserLevel.None);
类库中的给出了这个错误:
“不在独立的exe内部运行时必须指定exePath。”
以前正在使用控制台应用程序,代码可以访问app.config
。我尝试在类库中使用System.Web.Configuration
但是.Net选项卡中没有“添加引用”的dll。
请帮助:)
答案 0 :(得分:44)
您需要在Web上下文中使用其他配置管理器。以下代码 block显示了如何处理此问题的示例:
System.Configuration.Configuration configuration = null;
if (System.Web.HttpContext.Current != null)
{
configuration =
System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~");
}
else
{
configuration =
ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
}
答案 1 :(得分:2)
我不确定你在做什么;但乍一看,您似乎正在尝试在Web环境中使用为WinForms应用程序编写的代码。这几乎肯定是行不通的,因为您的网络应用程序将没有您需要的权限 尝试在Web环境中查找如何执行此操作(因为您似乎正在处理配置文件,尝试在WEB.CONFIG上搜索以启动)
答案 2 :(得分:1)
我尝试使用@shane的答案,但最终使用Hangfire遇到了相同的异常。这段代码对我有用:
System.Configuration.Configuration configFile = null;
if (System.Web.HttpContext.Current != null)
{
configFile =
System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~");
}
else
{
System.Configuration.ExeConfigurationFileMap map = new ExeConfigurationFileMap { ExeConfigFilename = $"{System.AppDomain.CurrentDomain.BaseDirectory}Web.Config" };
configFile = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None);
}
请注意,编辑Web.config将导致应用程序池重新启动!