我正在使用 gpg 加密解密,它在我的本地系统上运行良好(在 VS2015 上运行时)但是当我将它托管到服务器/或尝试从本地 IIS 运行它时它会失败。它不会提示任何运行时错误,但不会创建解密文件。这是命令:
gpg --local-user XXXXXT21XXX --output C:\Projects\myserver.api\Server_Files\input\callback_7a7ac0e3-89b1-4749-8d2a-d40cc84a27d5.xml --decrypt C:\Projects\server.api\Server_Files\Serverinput\callback_7a7ac0e3-89b1-4749-8d2a-d40cc84a27d5.asc
我用于解密的代码:
public string Decrypt(string inputFilePath, string extension = "")
{
try
{
var process = GetCmd();
string outputFilePath = $@"{FileHelper.InputPath}\{Path.GetFileNameWithoutExtension(inputFilePath)}{extension}";
string sCommandLine = $"{command}{string.Format(decCommand, outputFilePath, inputFilePath)}";
process.StandardInput.WriteLine(sCommandLine);
process.StandardInput.Flush();
process.StandardInput.Close();
process.WaitForExit();
process.Close();
return outputFilePath;
}
catch (Exception ex)
{
throw ex;
}
}
private static System.Diagnostics.Process GetCmd()
{
System.Diagnostics.ProcessStartInfo psi =
new System.Diagnostics.ProcessStartInfo("cmd.exe");
psi.CreateNoWindow = false;
psi.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
psi.UseShellExecute = false;
psi.RedirectStandardInput = true;
psi.RedirectStandardOutput = true;
psi.RedirectStandardError = true;
psi.Verb = "runas";
psi.WorkingDirectory = @"C:\Program Files (x86)\GnuPG\bin";
System.Diagnostics.Process process = System.Diagnostics.Process.Start(psi);
return process;
}
错误 :
System.IO.FileNotFoundException: Could not find file 'C:\Projects\Server.api\Server_Files\input\callback_7a7ac0e3-89b1-4749-8d2a-d40cc84a27d5.xml'.
File name: 'C:\Projects\Server_if.api\Server_Files\input\callback_7a7ac0e3-89b1-4749-8d2a-d40cc84a27d5.xml'
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
at System.IO.StreamReader..ctor(String path, Encoding encoding, Boolean detectEncodingFromByteOrderMarks, Int32 bufferSize, Boolean checkHost)
at System.IO.File.InternalReadAllText(String path, Encoding encoding, Boolean checkHost)
at Server.Common.Helpers.FileHelper.ReadAllText(String path) in D:\Projects\TFT\Bitbucket_PAYDO\Server_new\Server.Common\Helpers\FileHelper.cs:line 101
at Server.API.Controllers.ServerTransferController.<GetServerCallback>d__9.MoveNext()
如何在不提示输入密码的情况下运行 gpg 解密命令?