2012-03-29 55 views
2

我在我的应用程序的根目录上有一个log.txt文件。我希望能够让我的日志类能够访问此文件并写入它。但我不知道如何告诉它在我的代码中的文件的正确路径。感谢您的帮助有没有办法在我的asp.net应用程序的类中使用Server.MapPath

using (StreamWriter w = File.AppendText("log.txt")) 
    { 
     Log(e.ToString(),w); 
     w.Close(); 
    } 
+1

最好把所有登录的App_Data,可能是您的应用程序不具有权限的根文件夹 – 2012-03-29 13:28:20

+1

编写,并考虑:文件.AppendAllText(filename,msg); – 2012-03-29 13:42:47

回答

12

使用

Server.MapPath("~/log.txt") 

得到完整的文件名。

更新:

如果你不是一个ASP页面内,但在普通班,尝试:

System.Web.HttpContext.Current.Server.MapPath("~/log.txt") 

更新2: 它看起来像你想制作自己的日志解决方案。您可以考虑使用现有的解决方案,如NLogLog4Net

+0

我不能将它的类不是一个asp.net类。如果你能,你能告诉我如何? – user516883 2012-03-29 13:29:14

+0

'System.Web.HttpContext.Current.Server'在'MVC6'中的'View'中不可用现在只是'Context',但没有'Server' – 2016-02-19 08:15:26

1

通常情况下,您将从Web.config中获取该路径。
这将是一个物理文件路径,而不是相对URL路径。没有MapPath需要。

最简单的方法:用设置设计工具创建它,并把它读作

string fname = Properties.Settings.Default.LogFile; 
+0

好吧,你能给我一个例子,可以说我想将其保存到我的根目录。 – user516883 2012-03-29 13:29:54

+0

应用程序根目录或Diskdrive根目录?顺便说一句,既不是一个日志文件的好选择。 – 2012-03-29 13:33:46

相关问题