在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里了。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
