在 SSIS 中使用 Web 服务可提供'Mismatch between the processor architecture'



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

--教程链接——

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

警告1正在生成的项目的处理器体系结构"MSIL"与引用"Microsoft.SqlServer.DTSRuntimeWrap,Version=111.0.0.0,Culture=neutral,PublicKeyToken=88945dcd8080cc91","AMD64"的处理器体系结构不匹配。这种不匹配可能会导致运行时失败。请考虑通过Configuration Manager更改项目的目标处理器体系结构,以便使项目和引用之间的处理器体系结构保持一致,或者使用与项目目标处理器体系架构匹配的处理器体系架构来依赖引用。C: \Windows\Microsoft.NET\Framework\v4.0.30119\Microsoft.Common.targets

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

我在这里找到了Microsoft的解决方案,但我无法在SSIS中应用它。感谢提供的任何帮助

--编辑--

我向微软发送了一个新的反馈,他们正在审查这个问题-状态:活动

这是我的解决方案

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

右键单击"解决方案资源管理器"中的"引用"->选择"添加服务引用"->粘贴地址(http://www.ibanbic.be/IBANBIC.asmx)->点击"Go"按钮-然后点击"OK">

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

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上提供的"连接已关闭"错误

相关内容

最新更新