аргумент filePath для enterpriseLibrary.ConfigurationSource должен быть не относительным путем? - PullRequest
4 голосов
/ 04 июня 2011

В документации MSDN для этого элемента написано «Путь, указывающий на файл конфигурации. Этот атрибут необходим, если источником конфигурации является файл». Хорошо, это довольно очевидно.

Я попытался просто установить его в filePath = "предприимчивый.конфиг". Файл существует в корне моего веб-приложения. Но когда я пытаюсь зарегистрировать исключение, я получаю «Файл конфигурации предприимчивая библиотека.config не найден». То же самое, если я использую относительный путь "~ / предприимчивый.конфиг".

Итак, что за история с этим путем к файлу, должен ли он быть жестким (C: ... \ MyApp \ enterpriselibrary.config)? Есть ли какая-то документация, по которой я скучаю?

Ответы [ 2 ]

4 голосов
/ 07 июня 2011

Это известная ошибка в EL 5.0: http://entlib.codeplex.com/workitem/26760

Ошибка исправлена ​​в дополнительном обновлении 1. EL 5.0. На этой странице ошибок также есть обходной путь (код ниже).Я успешно использовал обходной путь.

workaround:
code:
[Microsoft.Practices.EnterpriseLibrary.Common.Configuration.ConfigurationElementType(typeof(FileConfigurationSourceElement))]
class FileConfigurationSource : Microsoft.Practices.EnterpriseLibrary.Common.Configuration.FileConfigurationSource
{

public FileConfigurationSource(string configurationFilepath)
: base(configurationFilepath)
{
}
}
class FileConfigurationSourceElement : Microsoft.Practices.EnterpriseLibrary.Common.Configuration.FileConfigurationSourceElement
{
public override Microsoft.Practices.EnterpriseLibrary.Common.Configuration.IConfigurationSource CreateSource()
{
string configurationFilepath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, this.FilePath);
return new FileConfigurationSource(configurationFilepath);
}
}
config:
<add name="sourceName" type="YourNamespase.FileConfigurationSource, YourAssembly" filePath ="fileName"/>
0 голосов
/ 07 июня 2011

filePath может быть относительным или абсолютным.Если вы указываете относительный путь, он считается относительным к каталогу AppDomain.CurrentDomain.BaseDirectory.Как вы обнаружили, вы не можете использовать относительный к корню путь (~ / предпринимаемая библиотека.config).

Я не уверен, почему ваш файл конфигурации не найден;корнем вашего веб-приложения должен быть BaseDirectory.

Для отладки вы можете проверить, что:

File.Exists(
    Path.Combine(AppDomain.CurrentDomain.BaseDirectory, 
        "enterpriselibrary.config"))

возвращает true.Если это так, то Enterprise Library сможет найти указанный файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...