2017-02-24 78 views
1

我有一個包含多個項目(包括服務項目(業務邏輯)和MVC UI項目(演示文稿))的Visual Studio解決方案。如何訪問n層mvc應用程序中的json文件VS2015

在服務項目中,我有一個json文件,需要在其中一個服務項目類中訪問。

我的問題是,幾乎所有的東西我嘗試返回到UI項目的路徑(不要在那裏JSON文件)

事情我已經嘗試:

Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "geo.json"); 
//returns a path contained within UI project 

HttpContext.Current.Server.MapPath("~/geo.json"); 
// also returns a path contained within UI project 

Environment.CurrentDirectory; 
// returns C:\\Program Files (x86)\\IIS Express 

我如何獲得未包含在UI項目中的json文件的路徑?

+0

什麼樣的項目是'服務項目'?它是一個類庫(一個.dll)嗎? –

+0

它是一個類庫。 – user3626232

+0

當你部署時,你的類庫的JSON最終會在你的用戶界面的文件夾結構中(很可能在'bin'中)。您需要右鍵單擊類庫中的JSON文件,選擇「屬性」並將「複製到輸出目錄」更改爲任一複製選項。 –

回答

0

由於「服務項目」是一個類庫,你不能真正做任何相對於類庫路徑的任何事情。

在編譯時將類庫轉換爲.dll文件,並將其複製到引用它的項目的bin文件夾中(也在編譯時)。

因此,當服務項目中的代碼詢問它從哪裏運行時,它將返回引用它的代碼的位置,因爲那是.dll文件最終的位置。

我希望這可以讓你有一定的感覺。如果我可以使用手偶,解釋起來會容易得多,但降價目前不支持使用有趣的道具。

正如弗蘭克在上面的評論中提到的那樣,您可以通過選擇文件的屬性並選擇「複製到輸出目錄」來告訴服務項目中的其他文件也被複制到bin文件夾中。如果你這樣做到你的geo.json文件,它將在bin文件夾中結束。

或者,在MVC應用程序中,可以將geo.json文件的路徑作爲參數傳遞給.dll的方法。這樣,由調用者知道信息的存儲位置。

+0

(請記住,我是作爲初級開發人員提問)考慮到這種情況,是否有另一種類型的項目應該用於包含我的業務邏輯? – user3626232

+0

好的..試圖放在足夠的細節是有用的。讓我知道任何不清楚的行話。 –

+0

謝謝你,現在確實有道理,我從來沒有遇到過這種情況。我想通過webapi暴露JSON可能會更好,而不是在bin文件夾中不斷更新/訪問它。 – user3626232

相關問題