【问题标题】:Could not find a part of path error on server在服务器上找不到部分路径错误
【发布时间】:2017-01-10 11:24:12
【问题描述】:

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

不知道这里的路径有什么问题,

这是错误截图

[![错误][1]][1]

【问题讨论】:

  • 如何初始化startupPath变量?它可能没有以正确的方式初始化。
  • 在你的情况下startupPath 是什么?
  • 我认为您已经创建了文件夹 C:\Windows\System32\Attachment,然后再尝试在其中创建 excel 文件。您可能需要确保运行您的服务的用户具有写入文件夹的权限。将服务的 Log On As 值设置为 Local System 可以解决此问题。
  • @sagar:更新问题
  • @uteist 假设 C:\Windows\System32 将是基本路径,您的解决方案将起作用。但是很少有人会给出这样的基本路径。基本路径初始化错误的可能性似乎很高。

标签: c# asp.net path server


【解决方案1】:

您可能假设当您安装服务时,它会在安装它的路径上运行,但 Windows 上的服务由通常位于 C:\Windows\System32 的“服务控制管理器”(scm)运行

因此,您的服务将C:\Windows\System32 值设为CurrentPath()

你可以试试:

startupPath = System.AppDomain.CurrentDomain.BaseDirectory;

*编辑:对于那些可能想要检查 scm 路径的人,您需要检查的文件是 sc.exe 就像您用于安装、启动等的 sc 命令一样。服务。

【讨论】:

  • 让我试试看!
  • 它在我的兄弟中完美运行..+1 为您的清晰逻辑。让我在主要生产服务器上确认.. 为你干杯:)
  • 很高兴它成功了。如果它也适用于服务器,请不要忘记将其标记为答案。泰
【解决方案2】:

看起来像访问权限问题。除非被授予您需要管理权限才能访问 C:\Windows\System32 文件夹。在您的本地计算机上,您可能可以访问路径,但在服务器上您没有。在代码中将 C:\Windows\System32 设置为 startupPath,尝试使用 Path.GetTempPath。

https://msdn.microsoft.com/en-us/library/system.io.path.gettemppath(v=vs.110).asp

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-27
    • 1970-01-01
    • 2018-06-28
    • 2020-03-02
    相关资源
    最近更新 更多