Server.mappath in C# classlibrary
-
20-09-2019 - |
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
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