目录未找到例外

时间:2009-10-28 02:21:35

标签: c#

我正在尝试编写一个错误日志,它会将所有错误存储到.txt文件中。 但是现在,我面临的问题是“目录未找到例外”

以下是我的常用方法代码(writelog)

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Text;
using System.IO;
using System.Diagnostics;

/// <summary>
/// Summary description for Writelog
/// </summary>
/// <param name="ErrorDesc">Desc</param>
/// <param name="ID">ID</param>
/// <param name="ProgPage">Name</param>
/// <param name="Message">Error Message</param>
public class Writelog
{
    public static void WritelogDesc(string Desc, string ID, string Name, string ErrorMessage)
    {
        StringBuilder sBuilder = new StringBuilder();

    string Errorlog = System.Configuration.ConfigurationManager.AppSettings["Errorlog"];

    string path = System.AppDomain.CurrentDomain.BaseDirectory.ToString();

    sBuilder.Append(DateTime.Now.ToString("dd/MM/yyyy") + " " + DateTime.Now.ToShortTimeString());
    sBuilder.Append(" | ");
    sBuilder.Append(Desc);
    sBuilder.Append(" | ");
    sBuilder.Append(ID);
    sBuilder.Append(" | ");
    sBuilder.Append(Name);
    sBuilder.Append(" | ");
    sBuilder.Append(ErrorMessage);

    StreamWriter sw = (!File.Exists(path)) ? File.CreateText(path) : File.AppendText(path);
    sw.WriteLine(sBuilder.ToString());
}

}

这就是我如何称呼writelog。

 Writelog.WritelogDesc("Desc", "ID", "Name", "ErrorMessage");

4 个答案:

答案 0 :(得分:7)

目前尚不清楚如何使用'path'和'Errorlog'变量。看起来您正在尝试使用目录路径创建文件。

在创建文件之前,您需要确保日志文件的基本路径存在。这接近你想要的吗?

Directory.CreateDirectory(path);
String logfile = Path.Combine(path, Errorlog);
StreamWriter sw = new StreamWriter(logfile, true);

答案 1 :(得分:1)

您的path是一个目录(string path = System.AppDomain.CurrentDomain.BaseDirectory.ToString()),但您将其用作FileFile.Exists(path))?

也许您应该将path定义为:

string path = Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, Errorlog)

如果Errorlog是您的文件名(例如“xys.txt”)

答案 2 :(得分:1)

构建文件路径:

string Errorlog=System.Configuration.ConfigurationManager.AppSettings["Errorlog"];
string path = System.AppDomain.CurrentDomain.BaseDirectory + Errorlog;
.......
.......
StreamWriter sw = (!File.Exists(path)) ? 
      File.CreateText(path) : File.AppendText(path);

sw.WriteLine(sBuilder.ToString());

答案 3 :(得分:0)

您可以使用filemon(http://technet.microsoft.com/en-us/sysinternals/bb896642.aspx)来检查fil系统上实际发生的事情。

通过这种方式,您可以看到程序何时尝试获取文件系统的句柄以及程序需要的文件和目录。