2

我尝试了下面的教程以在 SSIS 的脚本组件中使用 Web 服务。

--教程链接--

预编译后,我收到以下警告:

警告 1 正在构建的项目“MSIL”的处理器架构与参考“Microsoft.SqlServer.DTSRuntimeWrap, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91”, “AMD64”的处理器架构不匹配. 这种不匹配可能会导致运行时失败。请考虑通过配置管理器更改项目的目标处理器体系结构,以便在项目和参考之间对齐处理器体系结构,或者依赖具有与项目的目标处理器体系结构匹配的处理器体系结构的参考。C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets

而且我的脚本组件无法运行。

我在这里找到了微软的解决方案,但我不能在 SSIS 中应用它。任何帮助表示赞赏

- 编辑 -

我向 Microsoft 发送了新的反馈,他们正在审查该问题 - 状态:活动

4

1 回答 1

0

这是我的解决方案

我添加了服务参考,而不是 Web 参考

通过右键单击“解决方案资源管理器”中的引用 -> 选择“添加服务引用” -> 粘贴地址(http://www.ibanbic.be/IBANBIC.asmx) -> 单击“开始”按钮 - 然后'好的'

我在代码中添加了以下参考

using MYSCRIPTCOMPONENT.ServiceReference1;
using System.ServiceModel;
using System.Net.Http;

更新

这就是我的代码的样子:

    public override void Input0_ProcessInputRow(Input0Buffer Row)
    {
        using (var client = ScriptMain.CreateWebServiceInstance())
        {
            Row.BankIBAN = client.BBANtoIBANandBIC(Row.AccountNum_IsNull ? "" : Row.AccountNum).ToString();
        }
    }

    internal static SC_MYSCRIPTCOMPONENT.ServiceReference1.BANBICSoapClient CreateWebServiceInstance()
    {
        BasicHttpBinding binding = new BasicHttpBinding();
        // I think most (or all) of these are defaults--I just copied them from app.config:
        binding.Security.Mode = BasicHttpSecurityMode.None;
        binding.SendTimeout = TimeSpan.FromMinutes(1);
        binding.OpenTimeout = TimeSpan.FromMinutes(1);
        binding.CloseTimeout = TimeSpan.FromMinutes(1);
        binding.ReceiveTimeout = TimeSpan.FromMinutes(10);
        binding.AllowCookies = false;
        binding.BypassProxyOnLocal = true;
        binding.HostNameComparisonMode = HostNameComparisonMode.StrongWildcard;
        binding.MessageEncoding = WSMessageEncoding.Text;
        binding.TextEncoding = System.Text.Encoding.UTF8;
        binding.TransferMode = TransferMode.Buffered;
        System.Net.ServicePointManager.Expect100Continue = false;
        binding.UseDefaultWebProxy = true;
        return new SC_MYSCRIPTCOMPONENT.ServiceReference1.BANBICSoapClient(binding, new EndpointAddress("http://www.ibanbic.be/IBANBIC.asmx"));
    }

编辑

运行我的包时出现错误,它说:

基础连接已关闭:连接意外关闭。

我添加了这行代码(在我的 CreateWebServiceInstance 方法中):

System.Net.ServicePointManager.Expect100Continue = false;

概括

  1. 我添加了一个服务参考 - 如此处所述。[堆栈溢出]
  2. 我添加了设置绑定的代码 - 如此处所述。[堆栈溢出]
  3. 我添加了一行来修复“连接已关闭”-错误-如 MSDN 上提供的那样。
于 2013-12-26T10:07:07.463 回答