Comment voulez-vous déterminer le chemin d'accès physique d'un fichier sans HttpContext?
J'ai des processus qui s'exécutent sans HttpContext dans un ASP.NET application web MVC. Ce processus doit être en mesure de déterminer le chemin d'accès physique au Contenu du répertoire de l'application pour la lecture/écriture de données. Mais, puisqu'il est sans HttpContext, je n'ai pas à utiliser des choses de fantaisie comme Serveur.MapPath et ces. Des Suggestions?
- Même si
HttpContext.Current
peut être null,Server.MapPath
fonctionne toujours. Si vous n'avez pas "avoir" il, peut-être vous dire que vous manquez la référence àSystem.Web
? - Vous ne serez pas "ont" une référence à "Serveur" à utiliser .MapPath, par exemple, un constructeur statique, parce que le "Serveur" est une propriété de HttpContext.(Et aussi une propriété de HttpApplication), ni de ce qui sera fiable dans un contexte statique. Le "serveur" est de type "HttpServerUtility" dont le constructeur est interne, donc vous ne pouvez pas l'utiliser à moins que vous pouvez obtenir à partir de HttpContext.Actuelles ou HttpApplication Mondiale.asax. Par Conséquent, HttpRuntime.AppDomainAppPath est ce qui doit être utilisé, comme vous avez posté votre réponse ci-dessous.
Vous devez vous connecter pour publier un commentaire.
Dans un site web, il est préférable d'utiliser
HttpRuntime.AppDomainAppPath
, car à certains moments le chemin de l'exécution (c'est à dire quand le site commence vers le haut), il n'y a pasHttpContext.Current
disponibles.Voir aussi ce post.
La meilleure façon de le faire est d'utiliser le
domaine d'application.BaseDirectory
de la propriété. Tant que vous n'avez pas de jouer avec des personnalisés domaines d'application, il ne sera point à la racine de votre répertoire d'application. En d'autres termes, ces deux chaînes de caractères serait la même:HttpRuntime.AppDomainPath
, qui est garanti pour retourner le chemin d'accès correct. Mais driis est bon, je pense que très peu de cas où ces méthodes peuvent revenir à quelque chose de différent.