我已经使用WinSCP 6.1.0 NuGet包开发了一个.NET Core 6.0.在本地,我可以从我自己的PC访问SFTP服务器,获得连接并能够上传文件.
当我将我的应用程序部署为AWS Lambda函数时,我在Session.Open()
上收到以下错误:
WinSCP.SessionLocalException:在程序集WinSCPnet(/var/TASK)的位置找不到winscp.exe可执行文件,也未在安装路径中找到入门程序集Amazon.Lambda.RuntimeSupport(/var/time).您可以使用Session.ExecuablePath属性将路径显式设置为winscp.exe.
我知道,对于Azure函数,我可以这样设置ExecutablePath
,它是有效的:
[FunctionName(FunctionName)]
public static void Run([TimerTrigger("%XXXSendSchedule%")] TimerInfo myTimer, ILogger log, ExecutionContext executionContext)
using (Session winscpSession = new Session())
{
// See https://winscp.net/eng/docs/guide_microsoft_azure_function_sftp
winscpSession.ExecutablePath = Path.Combine(executionContext.FunctionAppDirectory, "winscp.exe");
然而,在Lambda函数中,ILambdaContext
似乎与Azure的FunctionAppDirectory
没有任何相似之处:
public void MyFunctionHandler(ILambdaContext context)
我在哪里可以找到Lambda函数保持WinSCP.exe
以便设置Session.ExecutablePath
的路径?
亨里克