【发布时间】:2015-03-05 16:20:13
【问题描述】:
我正在尝试在客户端服务器上的 SSIS 包中添加 Web 引用,以便与 Web 服务进行通信。
在我的脚本任务中,我可以添加 Web 引用,在代码中引用它,成功构建并保存它。
但是当我退出脚本任务编辑器时,我收到一个脚本错误提示 “包中包含的脚本有编译错误。您要保存更改吗?” em>
如果我在此处按“是”,我的脚本任务上会出现一个红叉,并显示 “找不到脚本的二进制代码。”。
即使我创建了一个新项目,添加了一个脚本任务,添加了具有相同结果的 Web 引用(脚本任务中没有其他代码)。
但是,添加与服务引用相同的引用会很好,不会出错。问题是该网络服务的所有者明确表示我必须使用网络引用,因为它的方法是 VS2005 Web 服务方法。
我在本地计算机上尝试了同样的方法,它适用于网络参考!我能想到的唯一区别是我在本地机器上使用 Microsft Visual Studio 2012(数据工具),而服务器使用 Microsoft Visual Studio 2010(数据工具)。
我还尝试在我的计算机上创建 SSIS 包,将其移至服务器,打开它(如果我没有更改脚本任务中的任何内容,则不会出现错误),然后运行该包。 收到以下错误消息“调用的目标已引发异常”。
在这种情况下,如果我打开脚本任务并进行任何更改(甚至添加注释),我在退出脚本任务后会收到相同的错误(找不到脚本的二进制代码。)。
我的尝试:
- 在 32 位运行时和 64 位运行时运行项目。
- 将 DelayValidation 设置为 True
- 将 Web 引用的 URL 行为更改为静态。
- 尝试调试,也根据http://blog.fredrikhaglund.se/blog/2009/12/22/debugging-exception-has-been-thrown-by-the-target-of-an-invocation/“扩展”调试。
- 检查了运行 VS 的用户的权限(在组件服务中, Microsoft SQL Server Integration Services 11.0),用户拥有完全权限。
- 以管理员身份运行 Visual Studio。
- 添加对完全不同的 Web 服务的 Web 引用,同样的错误。
其他信息:
服务器:Windows Server 2012
服务器上的互联网访问
.NET Framework 2.0,3.0,3.5 和 4.5 已安装在服务器上。
已安装客户端工具 SDK 和客户端工具向后兼容性 在服务器上。
我已经在整个网络上搜索可以解决此问题的人,但没有找到任何解决方案。 所以我转向 SO,我该如何解决这个问题?
提前致谢!
【问题讨论】:
-
您可以发布 TargetInvocation 错误的堆栈跟踪吗?您还可以尝试的一件事是在添加 webreference 时保存 reference.cs 并将其作为类添加到您的脚本组件中。看看在这种情况下类是否被保留。
-
我已经用错误消息的图片更新了帖子。我正在寻找 reference.cs 文件,但在项目的任何地方都找不到它,甚至检查了解决方案文件夹。我在哪里可以找到它?谢谢。
-
在脚本组件的项目资源管理器中,您还可以看到 ScriptMain.cs 有一个图标来显示所有文件。使用它,您可以深入到文件 reference.cs
-
找到了,我真的让它工作了!我添加了 Web 引用,复制了 reference.cs,删除了 Web 引用,然后在我的脚本任务中添加了 reference.cs 作为一个类。必须取消注释 reference.cs 中的一行,然后我可以像以前一样使用该引用。 Ako,请务必添加您的评论作为答案,我会接受它。谢谢!
-
没关系,我很高兴它对你有用。
标签: visual-studio-2010 web-services ssis web-reference sql-server-data-tools