Od Microsoft Web API nie jest MVC, nie można zrobić coś takiego:Microsoft Web API: jak zrobić Server.MapPath?
var a = Request.MapPath("~");
ani ten
var b = Server.MapPath("~");
ponieważ są pod nazw System.Web
, a nie nazw System.Web.Http
.
Jak rozpoznać ścieżkę serwera względnego w Web API?
kiedyś zrobić coś takiego w MVC:
var myFile = Request.MapPath("~/Content/pics/" + filename);
co dałoby mi bezwzględną ścieżkę na dysku:
"C:\inetpub\wwwroot\myWebFolder\Content\pics\mypic.jpg"
To jest ładne, ale nie ma łatwego sposobu, aby drwić HostingEnvironment ponieważ jest statyczna instancja klasy ... :-( –
Jasne, ale w kontrolerze lub innej warstwie logiki, które chcesz przetestuj, możesz wziąć tylko zależność od twojej własnej abstrakcji, jak 'IPathMapper' (prawdopodobnie przeniesiesz to z wieloma innymi problemami do większego interfejsu toolbelt/utility) z metodą' string MapPath (string virtualPath) ' Tylko konkretna implementacja twojego 'WebApi IPathMapper' musi wiedzieć o' System.Web.Hosting.HostingEnvironment' – StuartLC
@JoshG - możesz wyhodować HostingEnvironment.MapPath za pośrednictwem Func GetWebPath = HostingEnvironment.MapPath, a następnie nadpisać GetWebPath w czasie testu z próbą –