Pregunta

¿Cómo puedo usar el método Server.Mappath en una clase de biblioteca de clase C#, que actúa como mi empresa de negocios para mi sitio web de ASP.NET?

¿Fue útil?

Solución

Llamándolo?

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

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

Otros consejos

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

string  path = System.AppDomain.CurrentDomain.BaseDirectory;

Debe hacer referencia a System.web y llamar:

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

Tal vez podrías abstraer esto como una dependencia y crear un IvirtualPathResolver. De esta manera, sus clases de servicio no estarían vinculadas al sistema.

Utilizar este System.web.hosting.hostingenvironment.mappath ().

HostingEnvironment.MapPath("~/file")

Me pregunto por qué nadie lo mencionó aquí.

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

Architecturalmente, System.Web no debe referirse en la capa lógica de negocios (BLL). Emplee a BLL en la estructura de solución para seguir el principio separado de la preocupación, por lo que consulte el sistema. La vía es una mala práctica. BLL no debe cargar/ejecutar en el contexto ASP.NET. Por la razón por la que debe considerar usar System.AppDomain.CurrentDomain.BaseDirectory en vez de System.Web.HttpContext.Current.Server.MapPath

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top