c# server.mappath

Server.Mappath en C#classlibrary



(7)

¿Cómo puedo usar el método server.mappath en una clase de biblioteca de clase C #, que actúa como mi BusinessLayer para mi ASP.NET WEbsite?


Al llamarlo?

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

Asegúrese de agregar una referencia al ensamblado System.Web.


Arquitectónicamente, System.web no debe ser referido en Business Logic Layer (BLL). Emplee BLL en la estructura de la solución para seguir el principio separado de preocupación, así que consulte System.Web es una mala práctica. BLL no debería cargar / ejecutarse en el contexto de Asp.net. Debido a la razón por la que debe considerar el uso de System.AppDomain.CurrentDomain.BaseDirectory lugar de System.Web.HttpContext.Current.Server.MapPath


Debería hacer referencia a System.Web y llamar a:

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


Puede obtener la ruta base utilizando el siguiente código y anexar la ruta necesaria con eso.

string path = System.AppDomain.CurrentDomain.BaseDirectory;


Tal vez podrías abstraer esto como una dependencia y crear un IVirtualPathResolver. De esta manera, sus clases de servicio no estarían vinculadas a System.Web y podría crear otra implementación si quisiera reutilizar su lógica en una tecnología de IU diferente.



HostingEnvironment.MapPath System.Web.Hosting.HostingEnvironment.MapPath(path);