Server.mappath en C # ClassLibrary
-
20-09-2019 - |
Question
Comment puis-je utiliser la méthode server.mappath dans une classe de bibliothèque de classe C #, qui agit comme monlaker pour mon site Web ASP.NET
La solution
En l'appelant?
var path = System.Web.HttpContext.Current.Server.MapPath("default.aspx");
Assurez-vous d'ajouter une référence à l'assemblage System.Web.
Autres conseils
Vous pouvez obtenir le chemin de base en utilisant le code suivant et ajouter votre chemin nécessaire avec cela.
string path = System.AppDomain.CurrentDomain.BaseDirectory;
Vous devez référencer System.Web et appeler:
HttpContext.Current.Server.MapPath(...)
Vous pourriez peut-être résumer cela comme une dépendance et créer un ivirtualpathResolver. De cette façon, vos cours de service ne seraient pas liés à System.Web et vous pourriez créer une autre implémentation si vous vouliez réutiliser votre logique dans une technologie d'interface utilisateur différente.
Utilisez ceci System.web.hosting.hostingenvironment.mappath ().
HostingEnvironment.MapPath("~/file")
Je me demande pourquoi personne ne l'a mentionné ici.
HostingEnvironment.MapPath
System.Web.Hosting.HostingEnvironment.MapPath(path);
Architecturalement, System.Web ne doit pas être référé dans Business Logic Layer (BLL). Utilisez BLL dans la structure de la solution pour suivre le principe séparé des préoccupations, alors référez-vous Système.Web est une mauvaise pratique. BLL ne doit pas charger / exécuter dans le contexte ASP.NET. Pour la raison pour laquelle vous devriez envisager d'utiliser System.AppDomain.CurrentDomain.BaseDirectory
à la place de System.Web.HttpContext.Current.Server.MapPath