2014-02-13 74 views
0

我已經創建了一個控制檯應用程序,我已經測試並驗證了本地機器上的功能正常工作。當我在Production(live)服務器上創建使用此應用程序的調度程序時。我粘貼了「intpub/wwwroot/Utility/」中的發佈文件夾。現在當我運行代碼時,它會引發錯誤,即代碼無法找到需要在該進程中讀取的文件。它正在搜索「Windows/System32」文件夾中的文件。我不知道爲什麼。因爲還有一些其他調度程序也在同一個「實用程序」文件夾中工作。從那裏讀取文件。文件路徑沒有正確使用本地控制檯應用程序?

這裏是我的代碼:

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」 是哪個我說該文件。我不知道爲什麼會發生這種情況,請幫我糾正。我想從「Utility」文件夾中使用此文件。

回答

1

我認爲你應該更好地解釋你的情況,但看起來你在服務器中有不同的「當前目錄」。

當你打開你的StreamReader時,你有一個相對路徑,這可能是相對於Environment.CurrentDirectory而言的。

我建議2個解決方案:

  • 讓您的可執行文件的目錄,並結合起來,與文件名來獲得完整的路徑(見here

  • 假設由調度你的意思是Windows任務計劃程序,您可以設置起始目錄在你的行動定義:

see here

相關問題