文件路径没有完全适用于本地的控制台应用程序?

时间:2014-02-13 15:00:16

标签: asp.net windows file console-application readfile

我已经创建了一个控制台应用程序,我已经测试并验证了本地计算机上的功能,它运行正常。当我在Production(live)Server上使用此应用程序创建调度程序时。我已在“ intpub / wwwroot / Utility / ”中粘贴了release文件夹。现在,当我运行代码时,它会抛出我的错误,即代码无法找到我需要在该过程中读取的文件。它正在“ Windows / System32 ”文件夹中搜索文件。我不知道为什么。因为还有一些其他调度程序也在同一个“Utility”文件夹中工作。从那里读文件。

这是我的代码:

static void Main(string[] args)
    {
        try
        {
            DateTime DateFrom = DateTime.Now;
            DateTime DateTo = DateFrom.AddDays(-1);
            string BrochureRequest = string.Empty;
            string RequestEmail = string.Empty;
            string RequestLocation = string.Empty;

            StreamReader EmailList = new StreamReader("brochure_request_list_New.txt");
            while (EmailList.Peek() >= 0)
            {
                BrochureRequest = EmailList.ReadLine();
                if (BrochureRequest.IndexOf(",") > -1)
                {
                    RequestEmail = BrochureRequest.Substring(0, BrochureRequest.IndexOf(","));
                    RequestLocation = BrochureRequest.Substring(BrochureRequest.IndexOf(",") + 1);

                    SendBrochureRequests(RequestEmail, "", DateTo, DateFrom, RequestLocation);
                }
            }
            EmailList.Close();
        }
        catch (Exception AppError)
        {
            MailMessage ErrorMail = new MailMessage();
            ErrorMail.From = new MailAddress(ConfigurationManager.AppSettings["FromEmailAddress"]);
            ErrorMail.To.Add(ConfigurationManager.AppSettings["ErrorNotifyEmailAddress"]);
            ErrorMail.Subject = "Automailer Error";
            ErrorMail.Body = AppError.ToString();
            SmtpClient SmtpMail = new SmtpClient();
            SmtpMail.Send(ErrorMail);
        }
    }

brochure_request_list_New.txt ”是我正在谈论的文件。我不知道为什么会这样,请帮我纠正。我想在“实用程序”文件夹中使用此文件。

1 个答案:

答案 0 :(得分:1)

我认为您应该更好地解释您的方案,但看起来您在服务器中有不同的“当前目录”。

当你打开StreamReader时,你有一个相对路径,它可能是相对于Environment.CurrentDirectory而被插入的。

我建议2个解决方案:

  • 获取可执行文件目录并将其与文件名组合以获得完整路径(请参阅here

  • 假设您通过调度程序表示Windows任务计划程序,则可以在操作定义中设置起始目录:

see here