C# 如何将entlib.config映射到具有相对路径的webservices webconfig上?
似乎如果我没有给出正确的路径(即c:\something\entlib.config),那么在运行Web服务时会出现以下错误: System.IO.FileNotFoundException:找不到配置文件Entlib.config。 (……) 这是引用entlib文件的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
<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时都不太好。有没有一种方法可以映射相对路径?谢谢,但我正在寻找一种不会篡改代码的方法。我相信一定有一个更简单的方法。我会尝试这个解决方案,并在尝试安装时向您报告,说我已经有了最新版本,所以可能这不是问题所在。啊,这让我发疯了。非常感谢。