web-dev-qa-db-fra.com

Comment puis-je utiliser Server.MapPath () à partir de global.asax?

J'ai besoin d'utiliser Server.MapPath() pour combiner certains chemins de fichiers que je stocke dans le web.config.

Cependant, puisque Server.MapPath() s'appuie sur le HttpContext actuel (je pense), je ne peux pas le faire. Lorsque j'essaie d'utiliser la méthode, même si elle est "disponible", j'obtiens l'exception suivante:

Le fonctionnement du serveur n'est pas disponible dans ce contexte.

Existe-t-il une autre méthode qui peut mapper un répertoire relatif de racine Web tel que ~/App_Data/ Sur le chemin physique complet tel que C:\inetpub\wwwroot\project\App_data\?

117
John Bubriski

Vous pouvez essayer System.Web.Hosting.HostingEnvironment.MapPath () .

Aucun HttpContext requis.

285
Corbin March

Utilisation AppDomain.CurrentDomain.BaseDirectory car Context peut retourner null !!

4
Kiran Banda

Dans Global.asax, utilisez le contexte :

context.Server.mappath ()

Le contexte vous permet également d'accéder à la collection de sessions, à l'objet de demande et à l'objet de réponse. Très utile lorsque vous souhaitez enregistrer des erreurs, par exemple

1
tekBlues