C# 如何将entlib.config映射到具有相对路径的webservices webconfig上?

C# 如何将entlib.config映射到具有相对路径的webservices webconfig上?,c#,web-config,enterprise-library,C#,Web Config,Enterprise Library,似乎如果我没有给出正确的路径(即c:\something\entlib.config),那么在运行Web服务时会出现以下错误: System.IO.FileNotFoundException:找不到配置文件Entlib.config。 (……) 这是引用entlib文件的Webconfig部分: <enterpriseLibrary.ConfigurationSource selectedSource="EntLibconfig" parentSource=""> <sourc

似乎如果我没有给出正确的路径(即c:\something\entlib.config),那么在运行Web服务时会出现以下错误:

System.IO.FileNotFoundException:找不到配置文件Entlib.config。 (……)

这是引用entlib文件的Webconfig部分:

<enterpriseLibrary.ConfigurationSource selectedSource="EntLibconfig" parentSource="">
<sources>
  <add name="EntLibconfig"
       type="Microsoft.Practices.EnterpriseLibrary.Common.Configuration.FileConfigurationSource, Microsoft.Practices.EnterpriseLibrary.Common, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
       filePath="Entlib.config" />
</sources>
</enterpriseLibrary.ConfigurationSource>

我已经试过几种组合了 filePath=“Entlib.config”/> filePath=“。\Entlib.config”/> filePath=“~\Entlib.config”/> filePath=“。\Entlib.config”/>
filePath=“~\Entlib.config”/>

如果您使用的是项目setyp文件夹,则可以添加自定义项目安装程序文件,安装完成后,您可以找到entlib.config文件,因为您从安装程序中知道文件的安装位置,然后打开entlib.config并用安装的路径替换当前路径

        private void serviceInstaller1_AfterInstall(object sender, InstallEventArgs e)
    {
        //Gets Installed Directory that user selected
        string installDirectory = Path.GetDirectoryName(Context.Parameters["assemblypath"]);


        string[] lines = File.ReadAllLines(installDirectory + "\\NLog.config");
        File.Delete(installDirectory + NLOGFILE);
        StreamWriter sw = File.AppendText(installDirectory + "\\NLog.config");
        foreach (string line in lines)
        {
            if (line.Contains("LOGS"))
            {
                string logDir = line.Replace("LOGS", installDirectory + "\\LOGS");
                sw.WriteLine(logDir.Replace('\\', '/'));
            }
            else
            {
                sw.WriteLine(line);
            }
        }
        sw.Flush();
        sw.Close();
    }
我对Nlog.config做了类似的操作。
更新
“路径可以是相对路径,也可以是绝对路径。”有关详细信息,请参阅。

我相信这是一个错误。看起来它是固定的


或者,您可以扩展
FileConfigurationSource
并覆盖
CreateSource
方法(如上面的bug报告注释所示)。

如果您愿意,只需将Entlib.config放在您自己的app.config中,就不必担心寻找路径。您愿意这样做吗?这将是一个解决方案,但在每次我必须编辑Entlib.config时都不太好。有没有一种方法可以映射相对路径?谢谢,但我正在寻找一种不会篡改代码的方法。我相信一定有一个更简单的方法。我会尝试这个解决方案,并在尝试安装时向您报告,说我已经有了最新版本,所以可能这不是问题所在。啊,这让我发疯了。非常感谢。