Frage

Wie kann ich die Server.Mappath -Methode in einer C# -Klbibliotheksklasse verwenden, die als mein BusinessLayer für meine ASP.NET -Website fungiert?

War es hilfreich?

Lösung

Indem du es anrufen?

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

Stellen Sie sicher, dass Sie einen Verweis auf das System hinzufügen.

Andere Tipps

Sie können den Basispfad erhalten, indem Sie den folgenden Code verwenden und Ihren benötigten Pfad damit anhängen.

string  path = System.AppDomain.CurrentDomain.BaseDirectory;

Sie sollten auf System.web und Anruf verweisen:

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

Vielleicht könnten Sie dies als Abhängigkeit abstrahieren und einen ivirtualenpatheLesolver erstellen. Auf diese Weise wären Ihre Serviceklassen nicht an System.Web gebunden und Sie könnten eine andere Implementierung erstellen, wenn Sie Ihre Logik in einer anderen UI -Technologie wiederverwenden möchten.

Benutze das System.Web.Hosting.Hostingenvironment.Mappath ().

HostingEnvironment.MapPath("~/file")

Ich frage mich, warum es hier niemand erwähnt hat.

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

Architektonisch, System.Web sollte nicht in der Business Logic Layer (BLL) überwiesen werden. Beschäftigen Sie BLL in die Lösungsstruktur, um dem getrennten Prinzip des Problems zu folgen. BLL sollte in ASP.NET -Kontext nicht laden/ausführen. Aus dem Grund sollten Sie in Betracht ziehen, von zu verwenden System.AppDomain.CurrentDomain.BaseDirectory Anstatt von System.Web.HttpContext.Current.Server.MapPath

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top