天天看點

ASP.NET WebAPI項目中apiController控制器中怎樣獲得目前項目根目錄

在MVC項目中的時候,擷取目前項目的根目錄非常容易,我們經常會使用

Server.MapPath("~/");      

但是在WebAPI的控制器中為什麼就沒有了呢?

後來研究發現應該是因為

public class OrderController : ApiController      

----

專門建了一個MVC項目去追蹤Server.MapPath()的命名空間,後來找到一種方法。

其實這個方法就是Controller執行個體下的一個屬性(但不是apiController),是以我們執行個體化一個Controller就行了。

如下即可:

System.Web.Mvc.Controller controller = new HomeController();
 var curProjRootPath = controller.Server.MapPath("~/");      

==========

拓展:

如果在一個非網頁項目中,比如一個winform項目中,想要同樣擷取項目根目錄怎麼辦,我推測是項目中引用System.Web.Mvc即可,因為可以執行個體化一個Controller了。剩下的你懂的。

=========================

看了上面的内容,如果你去試了,你回頭可能要罵我了,因為我發現我上面說的是錯的。

但不論如何,我終究還是找到了。

如下:

var mappedPath = System.Web.Hosting.HostingEnvironment.MapPath("~/");