enterprise-library - EnterpriseLibrary.ConfigurationSource 的 filePath 参数是否必须是非相对路径?

标签 enterprise-library

此元素的 MSDN 文档说“指向配置文件的路径。如果配置源是文件,则此属性是必需的。”好的,这是相当明显的。

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

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

最佳答案

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

关于enterprise-library - EnterpriseLibrary.ConfigurationSource 的 filePath 参数是否必须是非相对路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6232234/

相关文章:

使用企业库在 azure 中记录异常

entity-framework - Jira 使用 OfBiz 的企业架构

c# - EnterpriseLibrary 数据访问应用程序 block 重定向部分找不到默认数据库

.Net 4.0 应用程序中的 .Net 3.5 Dll 存在任何问题

asp.net - 如何发布使用 Enterprise Library 进行日志记录的 Web 应用程序?

c# - Fluent ConfigurationSourceBuilder 导致 InvalidOperationException

c# - 企业图书馆数据访问 block 设计决策

c# - WCF、Unity、EntLib5、Linq-to-SQL 与 TDD 和 PI 的示例

wcf - 使用自定义异常处理程序 EL WCF 引发 FaultException

.net - 如果类型针对两个不同的接口(interface)注册但只有一个作为 ContainerControlledLifeTimeManager,为什么统一返回相同的实例