在SSIS中使用Web服务会导致“处理器架构之间的不匹配”

时间:2013-12-23 10:29:55

标签: c# web-services ssis script-component

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

--Link to tutorial--

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

  

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

我的脚本组件无法运行。

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

- 编辑 -

我向Microsoft发送了new feedback,他们正在审核此问题 - 状态:有效

1 个答案:

答案 0 :(得分: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. 我添加了服务参考 - 如上所述here. [STACK OVERFLOW]
  2. 我添加了代码来设置绑定 - 如前面提到的here. [STACK OVERFLOW]
  3. 我添加了一行来修复'连接已关闭' - 错误 - as provided on MSDN.