这可能是this帖子的重复问题,但我的错误不同且难以理解。
目前,我有一个只包含脚本任务的SSIS包。在该脚本任务内部,我已经引用了Microsoft.Exchange.WebServices.dll并将其包含在命名空间中。
每当我不使用WebServices中定义的任何方法和类时,脚本都可以完美运行。但是,每当我确实使用它们时,整个脚本都会失败,甚至无法到达第一行断点...它还会抛出以下错误:
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()
有什么想法吗?当我在这个SSIS脚本任务之外运行相同的代码(在其自己的项目中)时,它可以正常工作。
更新
我正在更新此帖子以包含更多可能有用的信息。我的脚本任务中的代码如下:
public void Main()
{
string _SharedBox = "user@domain.com";
ExchangeService service = new ExchangeService();
service.AutodiscoverUrl(_SharedBox);
service.UseDefaultCredentials = true;
//... goes on, but the rest is commented out for now.
}
我认为可能没有正确包含Microsoft.Exchange.WebServices,这可能是问题所在,但我不确定出了什么问题。我有一个DLL文件放在VS解决方案内,但在SSIS项目外。然后我将它作为Script Task的引用添加进去 - 这是我不确定的部分。我最初尝试通过NuGet包含WebServices,但是我意识到不能在Script Task中使用NuGet。下面是Script Task中我的解决方案:
提前感谢任何帮助!
service.AutodiscoverUrl(_SharedBox);
之前移动service.UseDefaultCredentials = true;
即可。 - Yahfoufi