2016-05-18 5 views
8

Come accedere al percorso di base dell'applicazione ASP.NET dalla proprietà IApplicationEnvironment.ApplicationBasePath da qualsiasi posizione nel codice? Non sono nella classe Startup ma in qualche altra classe helper e ho bisogno di trovare la directory dell'applicazione corrente da lì. Non c'è anche HttpContext perché il metodo verrà chiamato indipendentemente dalle richieste da un timer. Posso chiedere al contenitore delle dipendenze o qualcosa del genere per quella informazione? C'è un altro modo per ottenere queste informazioni?Accesso IApplicationEnvironment.ApplicationBasePath

risposta

10

Controllare sempre il announcements on GitHub per le versioni beta/rc.

Come annunciato here, l'interfaccia IApplicationEnvrionment è stata rimossa da ASP.NET Core RC2.

per ottenere il percorso nel metodo di avvio, fare questo

public Startup(IHostingEnvironment hostingEnvironment) 
{ 
    var builder = new ConfigurationBuilder() 
     .SetBasePath(hostingEnvironment.ContentRootPath) 
    ... 
} 

Se avete bisogno di fuori, è possibile utilizzare il metodo statico PlatformServices.Default per accedere sia tipi concreti o registri con il contenitore IoC e risolvere altrove. Più tardi uno è preferibile per la maggior parte degli usi.

+0

Grazie per l'aggiornamento RC2. Sono venuto da Google e sono pieni di vecchie cianfrusaglie. Intendi "PlatformServices.Default.Application.ApplicationBasePath'? Non riesco a vedere nulla di simile a "IHostingEnvironment.ContentRootPath' qui. – ygoe

+0

No, quello punta al file dll. Ho bisogno del percorso in cui si trovano gli altri file. Sto distribuendo un file di script con la mia applicazione e ho bisogno di ottenere il suo percorso in fase di esecuzione per chiamare un processo esterno con esso. – ygoe

+0

Il problema con l'uso di 'IHostingEnvironment' è che mi costringe a fare riferimento al pacchetto' Microsoft.AspNetCore.Mvc'. Stavo già usando 'AppDomain.CurrentDomain.BaseDirectory' in una libreria di classi che non ha nulla a che fare con MVC. Non voglio fare riferimento ai pacchetti MVC e introdurre quella dipendenza non necessaria. – NathanAldenSr

7

ora è possibile ottenere che da

IHostingEnvironment.ContentRootPath 

IApplicationEnvironment non esiste più