You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:C#调用WinSCP.Session.Open时遇非静态成员引用错误

解决WinSCP Session.Open()的非静态调用错误

嘿,这个问题我碰到过好多次啦!报错的核心原因很明确——你把Session.Open()当成静态方法直接调用了,但实际上它是实例方法,必须先创建Session类的对象,才能通过对象来调用这个方法。

咱们来一步步修正你的代码:

  1. 首先在connectToServer方法里,先实例化Session对象,再调用Open:
private void connectToServer() 
{
    // 先配置SessionOptions参数
    SessionOptions sessionOptions = new SessionOptions();
    sessionOptions.Protocol = Protocol.Sftp;
    sessionOptions.HostName = "server name";
    sessionOptions.UserName = "...";
    // 记得补充必要的登录信息,比如密码或密钥:
    // sessionOptions.Password = "your_login_password";
    // 如果是密钥登录,还要设置SshHostKeyFingerprint和SshPrivateKeyPath

    // 关键步骤:创建Session类的实例
    using (Session session = new Session())
    {
        // 现在通过实例调用Open方法
        session.Open(sessionOptions);

        // 这里可以添加后续操作,比如上传/下载文件
        // session.PutFiles(@"C:\local\file.txt", "/remote/path/").Check();
    }
}
  1. 为什么要用using语句?因为Session实现了IDisposable接口,using可以自动帮你释放资源,避免内存泄漏,这是使用WinSCP Session的最佳实践哦。

另外还要注意几个细节:

  • 确保你已经正确引用了WinSCP的程序集(WinSCPnet.dll)
  • 如果服务器的SFTP端口不是默认的22,要手动设置sessionOptions.PortNumber
  • 密钥登录时,必须正确配置SshHostKeyFingerprint(服务器公钥指纹),不然会连接失败

这样改完之后,那个“非静态字段、方法或属性需要对象引用”的错误就应该消失啦!

内容的提问来源于stack exchange,提问作者sparklzrocks

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:56:09