2011-06-03 98 views
3

此元素的MSDN文档显示“指向配置文件的路径。如果配置源是文件,则此属性是必需的。”好吧,这很明显。enterpriseLibrary.ConfigurationSource的filePath参数必须是非相对路径吗?

我试着将它设置为filePath =“enterpriselibrary.config”。该文件存在于我的Web应用程序的根目录中。但是当我尝试登录一个异常时,我得到“配置文件enterpriselibrary.config找不到。”同样的事情,如果我使用相对路径“〜/ enterpriselibrary.config”。

那么这个文件路径有什么故事,它必须是一个硬路径(C: ... \ MyApp \ enenterelibrary.config)?是否有一些我错过的文档?

回答

4

这是一个已知的错误在EL 5.0:http://entlib.codeplex.com/workitem/26760

该缺陷被固定在EL 5.0可选更新1.还有关于该错误页面(代码下文)一种解决方法。我已成功使用该解决方法。

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

filePath可以是相对的或绝对的。如果您指定了相对路径,则该路径被视为相对于AppDomain.CurrentDomain.BaseDirectory目录。正如你发现你不能使用根相对路径(〜/ enterpriselibrary.config)。

我不知道为什么你的配置文件没有找到;您的Web应用程序的根目录应该是BaseDirectory。

要调试可以检查:

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

回报true。如果确实如此,那么Enterprise Library应该能够找到指定的文件。

相关问题