在IIS中调用PostgreSQL组件失败的解决办法(在IIS中调试c#程序,
我在在cmd、C#中使用命令为PostgreSQL创建数据库、登录角色,并对数据库进行备份和恢复中写出了postgresql的备份恢复的具体方法,但是,当代码从visual studio中发布并部署到IIS上后,不论是备份还是恢复,都不能运行了。 using System.Diagnostics; //一定要引用这个命名空间 private static string result_success = ""; private static string result_error = ""; //备份数据库 string argbackup = @"--host=localhost --port=5432 --username=admin -w --format=c --blobs --verbose --file=D:/abc abc"; ProcessStartInfo backupProcess = new ProcessStartInfo(); backupProcess.FileName = @"C:Program FilesPostgreSQL9.5binpg_dump.exe"; backupProcess.Arguments = argbackup; backupProcess.UseShellExecute = false; backupProcess.RedirectStandardInput = true; backupProcess.RedirectStandardOutput = true; backupProcess.RedirectStandardError = true; backupProcess.CreateNoWindow = true; try { Process process = Process.Start(backupProcess); //在cmd中输出的成功的内容,重定向到result_success中 process.OutputDataReceived += (s,_e) => result_success += _e.Data; //在cmd中输出的成功的内容,重定向到result_error中 process.ErrorDataReceived += (s,_e) => result_error += _e.Data; //当EnableRaisingEvents为true,进程退出时Process会调用下面的委托函数 process.Exited += (s,_e) => Console.WriteLine("Exited with " + process.ExitCode); process.EnableRaisingEvents = true; process.BeginOutputReadLine(); process.BeginErrorReadLine(); process.WaitForExit(); process.Close(); } catch (Exception e) { Console.WriteLine(e.Message); } 在上面的代码中,增加了在IIS中将Process类在cmd中的输出内容输出到程序中的代码,但是,不知道postgresql的输出内容是怎么判断的,输出成功和失败的话都输出到error里了。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |