我想每天运行一个调度程序。所以我创建了一个Windows application
并将其存储到服务器上。
这在我的本地计算机上工作正常,但我得到路径错误
无法找到路径的一部分
C ^ \ Windows \ System32下..
有了这个,我认为可能存在一些与路径有关的问题。
这是我的代码。
startupPath = Environment.CurrentDirectory;
strExp = "RAName = '" + group.Key + "'";
DataTable dtNew = ds.Tables[1].Select(strExp).CopyToDataTable();
DataSet dsNew = new DataSet();
dsNew.Tables.Add(dtNew);
dtNew.Columns.Remove("RAName");
dtNew.Columns.Remove("UserEmail");
ExcelLibrary.DataSetHelper.CreateWorkbook(startupPath + "\\Attachment\\Reminder_Sheet_ " + dtNew.Rows[0]["SR NO"].ToString() + ".xls", dsNew);
ls_attach1.Add(startupPath + "\\Attachment\\Reminder_Sheet_ " + dtNew.Rows[0]["SR NO"].ToString() + ".xls");
foreach (var attach in ls_attach1)
{
mail.Attachments.Add(new Attachment(attach));
}
ce.SendEmail(tb_RA.Rows[0]["RA1_Email"].ToString(), "", "", "Information on documents for processing", sbodyMail,
"AUTOSQL", "Powersoft", ls_attach1, "ConnectionString");
foreach (Attachment attachments in mail.Attachments)
{
attachments.Dispose();
}
if ((System.IO.File.Exists(startupPath + "\\Attachment\\Reminder_Sheet_ " + dtNew.Rows[0]["SR NO"].ToString() + ".xls")))
{
System.IO.File.Delete(startupPath + "\\Attachment\\Reminder_Sheet_ " + dtNew.Rows[0]["SR NO"].ToString() + ".xls");
}
我不知道这条路有什么问题,
以下是错误的屏幕截图
答案 0 :(得分:1)
您可能认为在安装服务时,它会在安装服务的路径上运行,但Windows上的服务由服务控制管理器"运行。 (scm),通常位于C:\Windows\System32
因此,您的服务将C:\Windows\System32
值设为CurrentPath()
你可以尝试:
startupPath = System.AppDomain.CurrentDomain.BaseDirectory;
*编辑:对于那些可能想要检查scm路径的人,需要检查的文件是sc.exe
与用于安装,启动等的sc
命令一样。服务。
答案 1 :(得分:0)
看起来像访问权限问题。除非获得授权,否则您需要管理员权限才能访问C:\ Windows \ System32文件夹。在本地计算机上,您可以访问路径,但在服务器上则不能访问路径。如果在代码中将C:\ Windows \ System32设置为startupPath,请尝试使用Path.GetTempPath。
https://msdn.microsoft.com/en-us/library/system.io.path.gettemppath(v=vs.110).asp