J'ai un projet mvc asp.net qui utilise des méthodes de recherche dans une bibliothèque séparée. Cette bibliothèque a besoin de connaître l'emplacement de mes fichiers d'index lucene.Obtention du chemin absolu correct dans la bibliothèque utilisée par le projet Web
private static string lucenePath = ConfigurationManager.AppSettings["lucenePath"];
public static ColorList SearchColors(Query query) {
return new ColorList(
new IndexSearcher(Path.GetFullPath(lucenePath)),
query);
}
Ceci lit correctement ma configuration de lucenePath à partir du nœud de clé d'application web.config. Mais comment puis-je obtenir le chemin complet correct à partir de ce chemin relatif? Path.GetFullPath me donne un chemin complètement incorrect.
--Conclusion--
Si vous voulez aller plein-out, la réponse de tvanfosson est probablement pour vous.
I, cependant, gardé un peu plus de mort cérébrale en utilisant les éléments suivants:
Path.Combine(AppDomain.CurrentDomain.BaseDirectory,
ConfigurationManager.AppSettings["luceneIndex"].TrimStart('\\'));
Cela regardera dans un appkey appelé « chemin » de app.config de l'appelant et de combiner sa valeur au chemin de l'appelant. Le TrimStart() s'assure que le fichier de configuration peut contenir un \ ou non.
Y at-il aucun moyen de supprimer complètement la dépendance sur HttpServerUtility? Cette bibliothèque devrait être consommable à partir d'une application non-web aussi ... C'est bizarre d'inclure une librairie system.web dans une application autonome. Ne pas? –
Sure - implémente deux versions de la classe de configuration implémentant l'interface. Celui qui tourne depuis le site web vit dans le code web et utilise HttpServerUtility pour trouver le chemin. Celui qui s'exécute depuis votre application autonome peut utiliser l'assembly en cours d'exécution pour obtenir le chemin de l'exécutable. – tvanfosson
Les deux peuvent dériver d'une classe de base commune qui implémente la majeure partie de la logique (en utilisant ConfigurationManager, pas WebConfigurationManager) pour garder votre code DRY. – tvanfosson