Karena Microsoft Web API bukan MVC , Anda tidak dapat melakukan sesuatu seperti ini:
var a = Request.MapPath("~");
atau ini
var b = Server.MapPath("~");
karena ini berada di bawah System.Web
namespace, bukan System.Web.Http
namespace.
Jadi, bagaimana Anda mengetahui jalur server relatif di Web API ?
Saya biasa melakukan sesuatu seperti ini di MVC :
var myFile = Request.MapPath("~/Content/pics/" + filename);
Yang akan memberi saya path absolut pada disk:
"C:\inetpub\wwwroot\myWebFolder\Content\pics\mypic.jpg"
asp.net-web-api
Zachary Scott
sumber
sumber
IPathMapper
(Anda mungkin akan menggulung ini dengan sekelompok masalah lain ke dalam antarmuka toolbelt / utilitas yang lebih besar) dengan metodenyastring MapPath(string virtualPath)
. Hanya implementasi konkret yangWebApi IPathMapper
perlu Anda ketahuiSystem.Web.Hosting.HostingEnvironment
../images/
sumber
Sebagai tambahan bagi mereka yang tersandung di sepanjang ini, satu cara yang baik untuk menjalankan tingkat pengujian menggunakan panggilan HostingEnvironment, adalah jika mengakses katakanlah bagian UNC: \ example \ yang dipetakan ke ~ / example / Anda dapat menjalankan ini untuk berkeliling Masalah IIS-Ekspres:
Saya menemukan bahwa membantu jika Anda memiliki hak untuk menguji secara lokal pada file, tetapi perlu pemetaan env sekali dalam produksi.
sumber
HostingEnvironment
kelasnya ada diSystem.Web.Hosting
namespace.HostingEnvironment
untuk DNX core 5.0?Saya tidak bisa mengatakan dari konteks Anda pasokan, tetapi jika sesuatu itu Anda hanya perlu lakukan di aplikasi startup, Anda masih dapat menggunakan
Server.MapPath
diWebApiHttpApplication
; misalnya diApplication_Start()
.Saya hanya menjawab pertanyaan langsung Anda; yang sudah disebutkan
HostingEnvironment.MapPath()
mungkin merupakan solusi yang lebih disukai.sumber
Karena
Server.MapPath()
tidak ada di dalam Web Api (Soap atau REST), Anda harus menunjukkan direktori lokal ke direktori home konteks server web. Cara termudah untuk melakukannya adalah dengan:Anda kemudian dapat menggunakan ini untuk menggabungkan string path untuk memetakan path relatif ke file apa pun.
CATATAN: jalur string
\
dan tidak/
seperti mereka berada di MVC.Ex:
mengembalikan true-positing bahwa ini adalah jalur suara dalam contoh Anda
sumber
Jawaban yang dipilih tidak berfungsi di aplikasi API Web saya. Saya harus menggunakan
sumber
~\folder
atau../images/
ke jalur fisikAnda dapat mencoba seperti:
var path = "~ / Gambar / test.png"; System.Web.Hosting.HostingEnvironment.MapPath (@ + path)
sumber