Domanda

Come posso utilizzare il metodo Server.Mappath in una classe di libreria Classe C#, che funge da BusinessLayer per il mio sito Web ASP.NET

È stato utile?

Soluzione

Chiamandolo?

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

Assicurati di aggiungere un riferimento al sistema System.Web.

Altri suggerimenti

È possibile ottenere il percorso di base utilizzando il seguente codice e aggiungere il percorso necessario con quello.

string  path = System.AppDomain.CurrentDomain.BaseDirectory;

Dovresti fare riferimento a System.Web e chiama:

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

Forse potresti astrarre questo come una dipendenza e creare un IvirtualPathResolver. In questo modo le tue classi di servizio non sarebbero legate a System.Web e potresti creare un'altra implementazione se si desidera riutilizzare la tua logica in una diversa tecnologia dell'interfaccia utente.

Usa questo System.Web.Hosting.hostingEnvironment.mappath ().

HostingEnvironment.MapPath("~/file")

Mi chiedo perché nessuno l'ha menzionato qui.

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

Architecuralmente, System.Web non deve essere indirizzato nel livello della logica aziendale (BLL). Impiegare BLL nella struttura della soluzione per seguire il principio di preoccupazione separato, quindi fare riferimento al sistema. Web è una cattiva pratica. BLL non deve caricare/eseguire nel contesto ASP.NET. Per il motivo per cui dovresti considerare l'uso di System.AppDomain.CurrentDomain.BaseDirectory invece di System.Web.HttpContext.Current.Server.MapPath

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top