无法在服务器上找到路径错误的一部分

时间:2016-09-02 11:00:51

标签: c# asp.net path server

我想每天运行一个调度程序。所以我创建了一个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");
                    }

我不知道这条路有什么问题,

以下是错误的屏幕截图

Error

2 个答案:

答案 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