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

C# Azure Function调用WinSCP时Session.Open找不到winscp.exe如何解决

方案1:直接指定可执行文件路径(无需修改部署配置,推荐)

报错提示已经明确可以通过Session.ExecutablePath显式指定winscp.exe的路径,你已经确认文件存放在D:\home\site\wwwroot路径下,直接在打开会话前添加一行配置即可,代码修改如下:

using (Session session = new Session())
{
    // 新增这一行,也可以用环境变量拼接适配不同环境,避免写死绝对路径
    session.ExecutablePath = Environment.GetEnvironmentVariable("HOME") + @"\site\wwwroot\winscp.exe";
    try
    {
        session.Open(sessionOptions);
        // 后续原有逻辑
    }
    // 原有catch逻辑
}

方案2:调整项目配置让winscp.exe自动部署到bin目录

如果你需要让winscp.exe跟随程序集部署到wwwroot/bin路径,修改你的Azure Function项目的.csproj文件,添加如下配置强制构建时将winscp.exe复制到输出目录:

<ItemGroup>
  <Content Include="winscp.exe">
    <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
  </Content>
</ItemGroup>

如果你的WinSCP是通过NuGet包安装的,检查NuGet包的配置,确认WinSCP.targets已经被正确导入,部分版本的NuGet包在Azure Functions项目中会出现复制逻辑失效的问题,手动添加上述配置即可生效。重新发布后,winscp.exe会被自动包含在bin目录下,无需额外操作。

注意事项

检查你的Azure Function运行环境的位数,报错日志中显示当前运行的是32位版本的函数运行时,确保你使用的winscp.exe是32位版本,避免后续出现兼容性问题。


内容的提问来源于stack exchange,提问作者G. Trennert

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 13:09:04