2008-10-24 64 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"> 

比从来没有更好的迟到?

相关问题