Da Microsoft-API ist nicht MVC, Sie nicht so etwas tun kann:Microsoft Web API: Wie machst du einen Server.MapPath?
var a = Request.MapPath("~");
noch diese
var b = Server.MapPath("~");
, weil diese unter dem System.Web
Namespace, nicht der System.Web.Http
Namespace . Wie finden Sie den relativen Serverpfad in Web API?
habe ich so etwas wie dies in MVC zu tun:
"C:\inetpub\wwwroot\myWebFolder\Content\pics\mypic.jpg"
Das ist schön zu verwenden, aber es gibt keinen einfachen Weg, Hostingenvironment zu verspotten, da es sich um eine statische Klasseninstanz ist ... :-( –
Sicher, aber in Ihrem Controller oder eine andere Logik-Schicht, die Sie wollen test, würden Sie nur eine Abhängigkeit von Ihrer eigenen Abstraktion nehmen, wie 'IPathMapper' (Sie werden dies wahrscheinlich mit einer Menge anderer Bedenken in eine größere Toolbelt/Utility-Schnittstelle aufrollen) mit der Methode' string MapPath (string virtualPath) ' Nur die konkrete Implementierung für Ihren 'WebApi IPathMapper' muss über' System.Web.Hosting.HostingEnvironment' bekannt sein. – StuartLC
@JoshG - Sie können HostingEnvironment.MapPath über Func GetWebPath = HostingEnvironment.MapPath abstrahieren und dann GetWebPath überschreiben zur Testzeit mit einem Schein –