Obtención de la ruta absoluta correcta en la biblioteca utilizada por el proyecto web

StackOverflow https://stackoverflow.com/questions/602265

  •  03-07-2019
  •  | 
  •  

Pregunta

Tengo un proyecto mvc de asp.net que utiliza algunos métodos de búsqueda en una biblioteca separada. Esta biblioteca necesita saber la ubicación de mis archivos de índice de Lucene.

    private static string lucenePath = ConfigurationManager.AppSettings["lucenePath"];

    public static ColorList SearchColors(Query query) {
        return new ColorList(
            new IndexSearcher(Path.GetFullPath(lucenePath)),
            query);
    }

Esto lee correctamente mi lucenePath configurado desde el nodo clave de la aplicación web.config. Pero, ¿cómo puedo obtener la ruta completa correcta de esta ruta relativa? Path.GetFullPath me da una ruta completamente incorrecta.

--Conclusión--
Si desea completar el proceso, tvanfosson es probablemente para ti.
Sin embargo, mantuve un poco más de muerte cerebral al utilizar lo siguiente:

Path.Combine(AppDomain.CurrentDomain.BaseDirectory,
    ConfigurationManager.AppSettings["luceneIndex"].TrimStart('\\'));

Esto buscará en app.config de la persona que llama la aplicación appkey llamada " ruta " y combinar su valor a la ruta de la persona que llama. TrimStart () se asegura de que el archivo de configuración pueda contener o no un encabezado.

¿Fue útil?

Solución

Dado que está haciendo referencia a esto desde una biblioteca separada, es posible que tenga que saltar a través de un montón de aros para obtener acceso a HttpServerUtitity o introducir algún acoplamiento a clases que son difíciles de burlar. Es posible que desee considerar tener una sola clase de configuración que cargue las propiedades de la configuración web que se inyecta en su biblioteca a través del constructor / configurador. Para hacer que sea más fácil realizar pruebas en contra, puede definir una interfaz que se pueda burlar en sus pruebas unitarias y hacer que la implemente. La clase de configuración podría usar HttpServerUtility para obtener la ruta absoluta y almacenarla internamente para reutilizarla.

Otros consejos

Server.MapPath(string);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top