2016-09-06 41 views
1

打開文件Web API使用IIS和Visual Studio 2015創建新網站。它由3個解決方案組成。前端(網站),後端(webapi)和BL(businesslogic)。無法使用File.open()

BL是我們創建的.dll,用於在我們的後端和我們的數據庫之間來回傳遞數據以及執行其他一些功能。 BL也可以構建爲控制檯應用程序(我通常使用它來運行測試代碼)。

我的一個在BL功能需要打開一個HTML文件(這是必須要做到這一點的唯一功能。在這個解決方案沒有其他功能,需要打開文件...尚未)

VAR SR = File.OpenText( 「myFile.html」)

//使用SR

東西它生活的bin

Z:\ ... \ bin \ debug \ myFile.html

當我運行BL作爲控制檯應用程序時,這工作正常。但是,當我將其構建爲.dll並在我的後端解決方案中引用.dll時,除非將其放在一個特定文件夾中,否則無法找到該文件。

C:\ Program Files文件(x86)的\ IIS快遞

我已經花了約3小時,現在正試圖把它從我的解決方案或其他文件夾的地方打開該文件,但沒有不管我做什麼,它只會在IIS Express文件夾中看起來像一個不直觀的地方,但我非常接近說它搞砸它,並轉移到比一個愚蠢的HTML生活更重要的事情。我認爲這可能是一個非常簡單的答案,如果有人能指出,我將非常感激。

+1

Z:聽起來像一個映射驅動器的名稱,映射的驅動器每個用戶,你確定的Z:驅動器存在於IIS下運行的用戶?嘗試使用完整的網絡路徑。 –

回答

2

您指定的文件路徑只包含文件名稱而不是完整路徑。在File.OpenText中指定的路徑是相對於當前工作目錄中描述的MSDN article

當您調試時,dll被複制到bin文件夾中,以便成爲工作文件夾。當您部署它時,它將存放在IIS Express文件夾中,這是工作文件夾。

如果您希望文件在其他位置輸入絕對路徑或相對於當前工作目錄的目錄。

string path = @"c:\temp\myFile.html"; 
var sr = File.OpenText(path); 

string path = @"~/relativefolder/somewhere/myFile.html"; 
var sr = File.OpenText(path); 
+0

我不知道'〜'版本是否會按原樣工作,我想你需要調用['File.OpenText(Server.MapPath(path))'](https://msdn.microsoft.com/ EN-US /庫/ system.web.httpserverutility.mappath(v = vs.110)的.aspx) –