为什么在脚本任务 (SSIS) 中尝试添加 Web 引用时出现错误?

Why do I get an error when trying to add a web reference in a Script Task (SSIS)?

我正在尝试在客户端服务器上的 SSIS 包中添加 Web 引用,以便与 Web 服务进行通信。

在我的脚本任务中,我能够添加 Web 引用,在代码中引用它,成功构建并保存它。

BUT 当我退出脚本任务编辑器时,我收到一个脚本错误提示 "Script contained in the package have compilation errors. Do you want to save changes?"

如果我在此处按“是”,我的脚本任务会在其上显示一个红叉,并显示 "The binary code for the script is not found.".

即使我创建一个新项目,添加一个脚本任务,添加 Web 引用(脚本任务中没有其他代码),结果也是一样的。

但是,添加与服务引用相同的引用效果很好,没有错误。问题是这个网络服务的所有者明确表示我必须使用网络引用,因为它的方法是 VS2005 网络服务方法。

我在我的本地计算机上尝试了同样的事情,并且它适用于网络参考!我能想到的唯一区别是我在本地计算机上使用 Microsft Visual Studio 2012(数据工具),而服务器使用 Microsoft Visual Studio 2010(数据工具)。

我还尝试在我的计算机上创建 SSIS 包,将其移动到服务器,打开它(如果我没有在脚本任务中更改任何内容,则不会出现错误)然后 运行 包. 收到以下错误消息 "Exception has been thrown by the target of an invocation"

在这种情况下,如果我打开脚本任务并进行任何更改(甚至添加注释),我会在退出脚本任务后遇到相同的错误(找不到脚本的二进制代码。)。

我试过的:

其他信息:

我在网上搜索了解决这个问题的人,但没有找到。 所以我转向SO,我该如何解决这个问题?

提前致谢!

要解决网络引用消失的问题,您可以尝试将客户端代理代码手动添加到您的解决方案中:

  1. 在解决方案资源管理器中打开脚本组件 'Select all files' 图标
  2. 深入到 Webreference,找到 reference.cs 文件
  3. 将此文件的内容复制到新的 class 文件中。
  4. 删除网络引用
  5. 重新编译你的代码,保存并退出
  6. 打开您的项目以查看引用是否已保存。

最快捷、最简单的方法是搜索 C:\Users\Your 用户 Directory\AppData\Local\Temp 下应弹出的 VSTA 文件夹。

右键单击 VSTA 文件夹并转到“属性”。 授予帐户持有人完全访问权限。 保存并关闭 Visual Studio 重新打开应该没问题。