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

Était-ce utile?

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top