首页 > 解决方案 > 错误:无法访问已处置的对象。对象名称:'ShellStream'

问题描述

我正在使用 C# 和 ASP.NET 2.0 Web 应用程序。我正在尝试使用 Renci SSH.NET 连接到远程 unix 机器并执行 unix 命令。代码工作正常,现在突然出现错误 - 无法访问已处置的对象。我使用了下面的代码

public void function1()
{
 SshClient sshclient = new SshClient(hostname, username, pwd);
 sshclient.Connect();
 ShellStream stream = sshclient.CreateShellStream("cms1d", 80, 24, 800, 600, 1024);

 objCatcher.WriteOnlyInfo("whoami", stream);

 objCatcher.WriteOnlyInfo("command 2", stream);

 stream.Dispose();
 sshclient.Disconnect();
 sshclient.Dispose();
}

public void WriteOnlyInfo(string customCMD, ShellStream stream)
 {
    var writer = new StreamWriter(stream);
    writer.AutoFlush = true;

    WriteStream(customCMD, writer, stream);
}

private void WriteStream(string cmd, StreamWriter writer, ShellStream stream)
{
   writer.WriteLine(cmd);
   while (stream.Length == 0)
   {
      Thread.Sleep(2000);
   }
   Thread.Sleep(5000);
}

第一个命令正在运行,当代码执行第二个命令时,我收到了错误。我尝试删除 RENCI dll 并将其添加回来。清理并重新构建解决方案。该对象仅在函数的末尾放置。但这并没有帮助。如何解决这个问题?谢谢

标签: c#ssh

解决方案


推荐阅读