You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# IIS环境下通过CMD调用pg_dump备份表不生效问题

IIS托管.NET程序调用pg_dump备份数据表失效问题

问题背景

正在开发通过pg_dump --table参数备份重要数据表的功能,该功能在本地localhost环境运行正常,可顺利完成导出备份,但将程序部署到服务器通过IIS运行时,该功能无任何执行效果。
项目基于*.NET Framework 4.7.2*开发,功能实现代码如下:

try{
    var process = new Process();
    var startInfo = new ProcessStartInfo();
    startInfo.FileName = "cmd.exe";
    startInfo.WorkingDirectory = "C:\\Website\\Logs\\";
    string fileName = startInfo.WorkingDirectory+RandomString();
    startInfo.Arguments =
     $"/c set PGPASSWORD={userPassword}&pg_dump --file {fileName} --host {Ip} --port 5432 --username {userName} --no-password --verbose --format=d --table public.clients {DB_Name}";
    ServerLogs.SaveLog(startInfo.Arguments); //记录执行日志
    startInfo.Verb = "runas"; //以管理员身份运行
    startInfo.CreateNoWindow = true;
    startInfo.UseShellExecute = false;
    process.StartInfo = startInfo;
    process.Start();
    process.WaitForExit();
    process.Close();
    return "Success";
  }catch (Exception x)
   { 
    return x.Message; 
   }

服务端记录的进程启动参数显示,实际生成的待执行CMD命令如下:
/c set PGPASSWORD=MyPassword&pg_dump --file C:\Website\Logs\abcd\FileName123123 --host mycluster.eu-north-1.rds.amazonaws.com --port 5432 --username test--no-password --verbose --format=d --table public.clients CRM
手动将该命令复制到EC2服务器终端执行时,可正常运行并将表数据导出到指定路径,但通过IIS托管的程序触发执行时,仅能正常写入日志,pg_dump进程未完成表导出操作,也未生成任何备份文件。已确认服务器环境变量配置正确,可全局识别pg_dump命令。

已完成初步排查

  • 功能在本地运行正常,初步判断代码逻辑无明显错误
  • 生成的CMD命令在服务器终端手动执行正常,初步判断命令参数配置无误
  • 将进程启动参数替换为type nul > somefile.txt测试IIS对目标目录的写入权限,执行成功,初步排除目录写入权限问题
    目前已尝试多种公开解决方案仍未定位问题根因,寻求可行的排查思路与解决方案。

内容的提问来源于stack exchange,提问作者E.Mich

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 16:36:30