如何使用相对路径将 entlib.config 映射到 webservices webconfig 上?

发布于 2024-11-19 14:24:10 字数 897 浏览 1 评论 0原文

似乎如果我没有给出正确的路径(即 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" />

it seems that if I don't give the correct path (i.e. c:\something\entlib.config) I get the following error when running the webservice:

System.IO.FileNotFoundException: The configuration file Entlib.config could not be found.
(...)

This is the Webconfig part that refers to the entlib file:

<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>

I've tried several combinations already
filePath="Entlib.config" />
filePath=".\Entlib.config" />
filePath="~\Entlib.config" />
filePath=".\Entlib.config" />
filePath="~\Entlib.config" />

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

情痴 2024-11-26 14:24:10

我相信这是版本 5 中引入的错误。看起来它已在 Microsoft Enterprise Library 5.0 可选更新 1

或者,您可以扩展 FileConfigurationSource 并重写 CreateSource 方法(如上面的错误报告注释中所示)。

I believe this was a bug introduced in version 5. It looks like it is fixed in Microsoft Enterprise Library 5.0 Optional Update 1.

Or you could extend FileConfigurationSource and override the CreateSource method (as in the bug report comments above).

薯片软お妹 2024-11-26 14:24:10

如果您使用的是项目 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 做了类似的事情。

更新

“路径可以是相对路径或绝对路径。”请参阅此链接了解更多详细信息。

If you are using a Project setyp folder then you can add a custom Project Installer file, then after the install has completed you can find the entlib.config file because you know from the installer where the files were installed and then open the entlib.config and replace the current path with the installed path.

        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();
    }

I do something similar with Nlog.config.

Update

"The path can be a relative or absolute path." Please see this link for further details.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文