如何映射entlib.在webservices的webconfig上配置相对路径
本文关键字:webconfig 配置 路径 相对 webservices 何映射 映射 entlib | 更新日期: 2023-09-27 18:01:52
似乎如果我不给出正确的路径(即c:'something'entlib.config),我在运行webservice时得到以下错误:
先。FileNotFoundException:配置文件Entlib。找不到配置。(…)
这是指向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。配置"/>filePath ' Entlib = "。配置"/>filePath = " ~ ' Entlib。配置"/>filePath ' Entlib = "。配置"/>filePath = " ~ ' Entlib。配置"/>
我相信这是第5版引入的错误。这个问题似乎在Microsoft Enterprise Library 5.0可选更新1中得到了修复。
或者您可以扩展FileConfigurationSource
并覆盖CreateSource
方法(如上面的bug报告注释所示)。
如果您使用的是项目设置文件夹,那么您可以添加一个自定义项目安装程序文件,然后在安装完成后,您可以找到entlib。配置文件,因为您从安装程序中知道文件的安装位置,然后打开entlib。配置并将当前路径替换为安装路径。
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做了类似的事情。
更新
"路径可以是相对路径或绝对路径。"