Как отобразить entlib.config на webconfig веб-сервисов с относительным путем? - PullRequest
1 голос
/ 13 июля 2011

похоже, что если я не укажу правильный путь (например, c: \ Чем-то \ entlib.config), я получаю следующую ошибку при запуске веб-службы:

System.IO.FileNotFoundException: файл конфигурации Entlib.config не найден. (...)

Это часть Webconfig, которая ссылается на файл entlib:

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

Ответы [ 2 ]

2 голосов
/ 15 июля 2011

Я считаю, что это была ошибка , представленная в версии 5 . Похоже, что это исправлено в Microsoft Enterprise Library 5.0 Необязательное обновление 1 .

Или вы можете расширить FileConfigurationSource и переопределить метод CreateSource (как в комментариях к отчету об ошибках выше).

0 голосов
/ 13 июля 2011

Если вы используете папку Project 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.
Обновить
«Путь может быть относительным или абсолютным путем». Пожалуйста, смотрите эту ссылку для более подробной информации.

...