2008-10-24 79 views
3

場景 - 我需要訪問HTML模板以從我的業務邏輯層生成電子郵件。它是一個包含文件的子文件夾的類庫。當我試圖在單元測試以下代碼:在C#中實現文件訪問的最佳方式

string FilePath = string.Format(@"{0}\templates\MyFile.htm", Environment.CurrentDirectory); 
string FilePath1 = string.Format(@"{0}\templates\MyFile.htm", System.AppDomain.CurrentDomain.BaseDirectory); 

它用的是C:\ WINNT \ SYSTEM32 \或ASP.NET臨時文件夾的目錄。

什麼是最好的訪問此文件,而無需使用app.config或web.config文件?

[這是使用WCF服務]

+0

我最終將文件路徑存儲在web.config文件中。 – 2008-11-05 22:44:45

+0

[相關問題(控制檯應用程序而不是類庫)](http://stackoverflow.com/questions/97312/how-do-i-find-out-what-directory-my-console-app-is-running- in-with-c) – 2008-10-24 20:23:55

回答

6

您正在運行這從一個ASP.Net應用程序嗎?改爲使用Server.MapPath()

另請參閱System.IO.Path.Combine()以連接路徑。

[編輯] 既然你不能使用System.Web,試試這個:

System.Reflection.Assembly.GetExecutingAssembly().Location 

或者GetEntryAssembly()

+0

WCF服務正在使用它。 – 2008-10-24 19:36:15

+0

嗯,我的WCF體驗非常有限,你有權訪問服務器屬性?無論如何,應該有類似的東西。 – swilliams 2008-10-24 19:38:53

0

使用

System.Web.HttpServerUtility.MapPath("~/templates/myfile.htm") 
1

我相信你正在尋找

System.IO.Path.GetDirectoryName(Application.ExecutablePath); 
1

我得到這個工作在我的網站!在過去的兩年裏,我一直沒有爲此做過工作!

我在web.config的system.serviceModel塊中添加了這個。它似乎使所有的路徑相對於你的服務的安裝位置。

<system.serviceModel> 
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"> 

比從來沒有更好的遲到?

相關問題