似乎如果我没有给出正确的路径(即c:\ something \ entlib.config),运行webservice时会出现以下错误:
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”/&gt; filePath =“。\ Entlib.config”/&gt; filePath =“〜\ Entlib.config”/&gt; filePath =“。\ Entlib.config”/&gt; filePath =“〜\ Entlib.config”/&gt;
答案 0 :(得分:2)
我相信这是bug introduced in version 5。它似乎已在Microsoft Enterprise Library 5.0 Optional Update 1中修复。
或者您可以扩展FileConfigurationSource
并覆盖CreateSource
方法(如上面的错误报告评论中所述)。
答案 1 :(得分:0)
如果您使用的是Project setyp文件夹,那么您可以添加自定义Project Installer文件,然后在安装完成后您可以找到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做类似的事情。
更新
“路径可以是相对路径或绝对路径。”有关详细信息,请参阅this link。