2009-10-05 16 views
5

Desidero utilizzare il metodo Server.MapPath() per mappare una directory virtuale Ho creato il percorso fisico.Server.MapPath()

Il fatto è che l'ambiente .net non riconosce Server.MapPath().

Google mi ha detto che dovrei usare HttpContext.Current.Server utilizzando System.Web, ma HttpContext non viene riconosciuto nonostante io utilizzi System.Web. (E ho controllato - HttpContext È una delle classi di System.Web)

Aiuto?

+0

Che lingua sarebbe? – Esko

+0

. L'ambiente .net non riconosce Server.MapPath() '. C'è qualche errore? – rahul

+1

Avete incluso System.Web come riferimento del progetto? – rslite

risposta

3

Assicurati di aver inserito nei propri progetti System.Web Riferimenti fare questi (In Visual Studio IDE):

  1. Fare clic destro sul nodo del progetto (soluzioni Windows Explorer)
  2. sul contesto Mennù , fare clic su Aggiungi riferimento
  3. Selezionare System.Web negli elementi dell'elenco della scheda .NET.
  4. Hit pulsante OK

Server.MapPath dovrebbe ora essere disponibile.

+0

Questa soluzione ha funzionato per me poiché stavo lavorando in una libreria di classi. –

3

Se si dispone di un'applicazione Web, è necessario disporre automaticamente di un riferimento a System.Web.dll e si dovrebbe avere accesso alla classe System.Web.HttpContext. Verifica di non aver rimosso accidentalmente il riferimento. Avresti bisogno di una dichiarazione using System.Web; per accedere alla classe HttpContext senza specificare lo spazio dei nomi completo.

Se non si dispone di un'applicazione Web, è necessario aggiungere un riferimento a System.Web.dll per ottenere l'accesso alla classe HttpContext, ma questo non aiuta un po '. Poiché non ci si trova in un'applicazione Web, non esiste un contesto HTTP e non esiste una cartella Web principale, quindi non è possibile utilizzare il metodo MapPath.

+0

Potrebbe trattarsi di un metodo in un assembly separato utilizzato dall'app Web, quindi il contesto potrebbe esserci dopo tutto. – rslite

+0

@rslite: Sì, hai ragione. Questo è anche un possibile motivo per cui il riferimento potrebbe mancare. – Guffa

1

Lo stesso problema qui. In un'applicazione Web ASP.net 4.0, in un gestore .ashx, con uno using System.Web nella parte superiore. Non potrei usare Server.MapPath() che è quello che il libro che ho detto di usare o System.Web.HttpServerUtility.MapPath() che è ciò che Google e MSDN continuano a girare. Inoltre non potrei usare HttpServerUtility.MapPath() come menzionato sopra.

Tuttavia, una delle altre risposte qui mi ha spinto a provare context.Server.MapPath() che funziona nel mio metodo ProcessRequest(HttpContext context).

+0

Per essere ancora più preciso: 'HttpContext.Current.Server.MapPath()' – Nurp