我尝试下面的教程在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 \ Framework \ v4.0.30319 \ Microsoft.Common.targets


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

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

-编辑-

我已将new feedback发送给Microsoft,他们正在审查此问题-状态:有效

最佳答案

这是我的解决方案

我添加了服务参考,而不是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;


摘要


我添加了服务参考-如here. [STACK OVERFLOW]所述
我添加了设置绑定的代码-如here. [STACK OVERFLOW]所述
我添加了一行来修复“连接已关闭”错误-as provided on MSDN.

关于c# - 在SSIS中使用Web服务会导致“处理器体系结构之间不匹配”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20741590/

10-10 22:10