Ich habe ein asp.net mvc-Projekt, das einige Suchmethoden in einer separaten Bibliothek verwendet. Diese Bibliothek muss den Speicherort meiner Lucene-Indexdateien kennen.Ermitteln des korrekten absoluten Pfads in der vom Webprojekt verwendeten Bibliothek
Das liest korrekt meinen konfigurierten lucenePath aus dem Anwendungsschlüsselknoten web.config. Aber wie kann ich den korrekten vollständigen Pfad von diesem relativen Pfad erhalten? Path.GetFullPath gibt mir einen völlig falschen Pfad.
--Conclusion--
Wenn Sie voll-out gehen wollen, ist tvanfosson ‚s Antwort für Sie wahrscheinlich.
I, hielt es jedoch ein wenig mehr hirntot durch die folgende Verwendung:
Path.Combine(AppDomain.CurrentDomain.BaseDirectory,
ConfigurationManager.AppSettings["luceneIndex"].TrimStart('\\'));
Das in der app.config des Anrufers für einen appkey aussehen wird „Pfad“ genannt, und dessen Wert auf den Pfad des Anrufers kombinieren. Der TrimStart() stellt sicher, dass die Konfigurationsdatei sowohl ein vorangestelltes als auch nicht enthalten kann.
Gibt es keine Möglichkeit, die Abhängigkeit vollständig zu entfernen auf HttpServerUtility? Diese Bibliothek sollte auch von einer Nicht-Web-App konsumierbar sein ... Es fühlt sich komisch an, eine system.web lib in eine eigenständige Anwendung aufzunehmen. Nicht? –
Sicher - Implementieren Sie zwei Versionen der Konfigurationsklasse, die die Schnittstelle implementieren. Der, der von der Website ausgeführt wird, lebt im Webcode und verwendet HttpServerUtility, um den Pfad zu finden. Die Anwendung, die von Ihrer eigenständigen Anwendung ausgeführt wird, kann die aktuell ausgeführte Assembly verwenden, um den Pfad der ausführbaren Datei abzurufen. – tvanfosson
Beide können von einer gemeinsamen Basisklasse abgeleitet werden, die den Großteil der Logik implementiert (mithilfe von ConfigurationManager, nicht WebConfigurationManager), um den Code DRY beizubehalten. – tvanfosson