WinSCP hangs with ASP.NET
winscp connects and transfers the files with no problems.
when I run my batch file from the command line, winscp runs/exits as it should
when I run my batch file within asp.net, it connects and transfers without any problems but it the process does not terminate unless I go into task manager.
i have read to faq as well as the documentation, so I please don't offer that as a solution.
It should not the settings in the registry because I'm using the ini file.
here is all my code:
--------------
winscp.bat
--------------
@echo off
call "c:\program files\winscp3\winscp3.com" /script="%1"
exit
--------------------
script.txt
//dynamically generated, file name changes with each order
//ex: order_[datetime].dat.txt
--------------------
option batch on
option confirm off
open [user name]:[password]@[sftp server]:[port]
option transfer binary
cd "/home/incoming"
put "C:\orders\outgoing\order_20070307145630.dat" //matching order file
close
exit
---------------------
asp.net (c#) code
---------------------
string orderTime = DateTime.Now.ToString("yyyyMMddHHmm");
string filePath = string.Format(@"c:\orders\outgoing\order_{0}.dat",orderTime);
string scriptPath = string.Format(@"c:\orders\scripts\order_{0}.dat.txt",orderTime);
//GenerateFtpFile(filePath);
//GenerateFtpScript(scriptPath);
ProcessStartInfo si = new ProcessStartInfo();
si.FileName = @"c:\orders\winscp.bat";
si.Arguments = scriptPath;
si.CreateNoWindow = true;
si.UseShellExecute = false;
int maxTime = 100000;
int executeTime = 0;
Process executeBatchProcess = Process.Start(si);
do
{
executeTime += 1000;
executeBatchProcess.Refresh();
if (executeTime > maxTime)
{
executeBatchProcess.Kill();
break;
}
}
while (!executeBatchProcess.WaitForExit(1000));
executeBatchProcess.CloseMainWindow();
executeBatchProcess.Close();
-----------------------------------
that's it, nothing extremely difficult or fancy.
winscp never exits, the command console will close only if I call "executeBatchProcess.Kill();" but winscp still runs.
the only way to stop winscp is to go into the task manager.
I have seen other post on this forum, but still no solutions, such as topic: 2309
what do i need to do to fix this issue?
when I run my batch file from the command line, winscp runs/exits as it should
when I run my batch file within asp.net, it connects and transfers without any problems but it the process does not terminate unless I go into task manager.
i have read to faq as well as the documentation, so I please don't offer that as a solution.
It should not the settings in the registry because I'm using the ini file.
here is all my code:
--------------
winscp.bat
--------------
@echo off
call "c:\program files\winscp3\winscp3.com" /script="%1"
exit
--------------------
script.txt
//dynamically generated, file name changes with each order
//ex: order_[datetime].dat.txt
--------------------
option batch on
option confirm off
open [user name]:[password]@[sftp server]:[port]
option transfer binary
cd "/home/incoming"
put "C:\orders\outgoing\order_20070307145630.dat" //matching order file
close
exit
---------------------
asp.net (c#) code
---------------------
string orderTime = DateTime.Now.ToString("yyyyMMddHHmm");
string filePath = string.Format(@"c:\orders\outgoing\order_{0}.dat",orderTime);
string scriptPath = string.Format(@"c:\orders\scripts\order_{0}.dat.txt",orderTime);
//GenerateFtpFile(filePath);
//GenerateFtpScript(scriptPath);
ProcessStartInfo si = new ProcessStartInfo();
si.FileName = @"c:\orders\winscp.bat";
si.Arguments = scriptPath;
si.CreateNoWindow = true;
si.UseShellExecute = false;
int maxTime = 100000;
int executeTime = 0;
Process executeBatchProcess = Process.Start(si);
do
{
executeTime += 1000;
executeBatchProcess.Refresh();
if (executeTime > maxTime)
{
executeBatchProcess.Kill();
break;
}
}
while (!executeBatchProcess.WaitForExit(1000));
executeBatchProcess.CloseMainWindow();
executeBatchProcess.Close();
-----------------------------------
that's it, nothing extremely difficult or fancy.
winscp never exits, the command console will close only if I call "executeBatchProcess.Kill();" but winscp still runs.
the only way to stop winscp is to go into the task manager.
I have seen other post on this forum, but still no solutions, such as topic: 2309
what do i need to do to fix this issue?