Server.Mappath dans la bibliothèque de classes C #

Comment puis-je utiliser la méthode server.mappath dans une classe de bibliothèque de classe C #, qui fait office de BusinessLayer pour My WEBsite ASP.NET

    En l’appelant?

    var path = System.Web.HttpContext.Current.Server.MapPath("default.aspx"); 

    Assurez-vous d’append une référence à l’assembly System.Web.

    Vous pouvez obtenir le chemin de base en utilisant le code suivant et append votre chemin requirejs avec cela.

     ssortingng path = System.AppDomain.CurrentDomain.BaseDirectory; 

    Vous devez référencer System.Web et appeler:

      HttpContext.Current.Server.MapPath(...) 

    Peut-être pourriez-vous abstraire cela en tant que dépendance et créer un IVirtualPathResolver. De cette façon, vos classes de service ne seraient pas liées à System.Web et vous pourriez créer une autre implémentation si vous souhaitez réutiliser votre logique dans une autre technologie d’interface utilisateur.

    Utilisez ce 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); 

    Sur le plan architectural, System.web ne doit pas être référencé dans BLL (Business Logic Layer). Utiliser BLL dans la structure de la solution pour suivre le principe distinct de la préoccupation, reportez-vous à System.Web est une mauvaise pratique. BLL ne doit pas être chargé / exécuté dans le contexte Asp.net. En raison de la raison pour laquelle vous devriez envisager d’utiliser System.AppDomain.CurrentDomain.BaseDirectory au lieu de System.Web.HttpContext.Current.Server.MapPath