SSIS脚本任务使用AWSSDK.Core的RegionEndpoint类时触发异常的问题求助
我们目前在开发SSIS的Script Task,目标框架为.NET Framework v4.7,对应的C#语言版本是v7.3。代码本身可以成功编译,但在Visual Studio中运行时,只要执行这行代码:
RegionEndpoint regionEndpoint = RegionEndpoint.USEast1;
就一定会触发以下异常:
at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.RuntimeType.InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParams)
at Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTATaskScriptingEngine.ExecuteScript()
为了排查问题,我们做了测试:如果把这行代码注释掉,脚本任务就能正常运行。所以可以确定,问题的根源就是这一行代码。
我们非常感谢大家能提供任何相关的提示和建议!
详细信息
1. 项目文件片段:
<?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup> ... <TargetFrameworkVersion>v4.7</TargetFrameworkVersion> ... </PropertyGroup> ... <ItemGroup> <Reference Include="AWSSDK.Core, Version=3.3.0.0, Culture=neutral, PublicKeyToken=885c28607f98e604, processorArchitecture=MSIL"> <HintPath>C:\my\work\xxx\packages\AWSSDK.Core.3.7.402.3\lib\net45\AWSSDK.Core.dll</HintPath> </Reference> <Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL"> <HintPath>C:\Users\user.name\AppData\Local\Temp\Vsta\SSIS_ST160\xxx\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll</HintPath> </Reference> <Reference Include="System" /> <Reference Include="System.Data" /> <Reference Include="System.Windows.Forms" /> <Reference Include="System.Xml" /> <Reference Include="Microsoft.SqlServer.ManagedDTS, Version=16.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" /> <Reference Include="Microsoft.SqlServer.ScriptTask, Version=16.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" /> </ItemGroup> ... </Project>
2. SSIS中C#脚本任务的源代码:
#region Namespaces using System; using Amazon; #endregion namespace ST_xxx { [Microsoft.SqlServer.Dts.Tasks.ScriptTask.SSISScriptTaskEntryPointAttribute] public partial class ScriptMain : Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase { public async System.Threading.Tasks.Task Main() { try { string regionName = "us-east-1"; RegionEndpoint regionEndpoint = RegionEndpoint.USEast1; } catch (Exception ex) { Dts.Events.FireError(0, "Error", ex.Message, string.Empty, 0); throw; } Dts.TaskResult = (int)ScriptResults.Success; } #region ScriptResults declaration enum ScriptResults { Success = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Success, Failure = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Failure }; #endregion } }
备注:内容来源于stack exchange,提问作者Mike

