不在独立的exe内部运行时必须指定exePath

时间:2013-05-23 17:46:27

标签: c# web-config app-config

当我使用网络应用程序时,下面的代码行

Configuration objConfig = 
    ConfigurationManager.OpenExeConfiguration( ConfigurationUserLevel.None);
类库中的

给出了这个错误:

  

“不在独立的exe内部运行时必须指定exePath。”

以前正在使用控制台应用程序,代码可以访问app.config。我尝试在类库中使用System.Web.Configuration但是.Net选项卡中没有“添加引用”的dll。

请帮助:)

3 个答案:

答案 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将导致应用程序池重新启动