我有一个asp.net mvc项目,它在一个单独的库中使用了一些搜索方法。 这个库需要知道我的lucene索引文件的位置。
private static string lucenePath = ConfigurationManager.AppSettings["lucenePath"];
public static ColorList SearchColors(Query query) {
return new ColorList(
new IndexSearcher(Path.GetFullPath(lucenePath)),
query);
}
这正确地从web.config的应用程序密钥节点读取我配置的lucenePath。 但是,如何从这条相对路径获得正确的完整路径? Path.GetFullPath给了我一条完全不正确的路径。
- 结论 -
如果你想全力以赴,tvanfosson的回答可能适合你
然而,通过使用以下内容,我保持了更多的脑力:
Path.Combine(AppDomain.CurrentDomain.BaseDirectory,
ConfigurationManager.AppSettings["luceneIndex"].TrimStart('\\'));
这将在调用者的app.config中查找名为“path”的appkey,并将其值与调用者的路径相结合。 TrimStart()确保配置文件都包含前导\或不包含。
答案 0 :(得分:1)
Server.MapPath(string);
答案 1 :(得分:0)
由于您是从一个单独的库引用它,因此您可能必须跳过一堆箍来访问HttpServerUtitity或引入一些难以模拟的类的耦合。您可能需要考虑使用单个配置类来从Web配置加载属性,这些属性通过构造函数/ setter注入到库中。为了使测试更容易,您可以定义一个可以在单元测试中模拟的接口,并让它实现。配置类可以使用HttpServerUtility获取绝对路径并将其存储在内部以供重用。