通过脚本任务在SSIS中调用安全的Web服务

时间:2016-05-18 06:52:54

标签: c# web-services ssis wsdl

我正在开发一个SSIS包,我们必须通过脚本任务在SSIS中调用或使用Web服务。我已经经历了这么多链接,但我无法找到确切的解决方案。我得到了很多参考资料,但我无法破解它。

我的要求是我需要通过具有客户端证书的脚本任务来调用Web服务URL。调用此URL后,我们将从Web服务获取WSDL文件。我们需要使用该WSDL文件,我们需要识别此WSDL中的方法,并需要将此WSDL中可用的数据写入数据库表。我不知道如何通过脚本tas调用该Web服务URL(带证书),如何读取WSDL文件以及如何将数据加载到DB表中。

2 个答案:

答案 0 :(得分:3)

  

在ServiceReferences文件夹下添加Service引用,在Reference文件夹下添加System.ServiceModel(这是在脚本中使用EndPointAddress类)

在Main方法中,使用以下脚本(高级别)开始...

 var endPointAddress = new EndpointAddress('http://Server/ServiceName.svc');
 //Put your end point address 
 var basicBinding = new BasicHttpBinding();
 basicBinding.Name = "BasicHttpBinding_IService";
 //this is the port name, you can find it in the WSDL
 ClassServiceClient pay = new ClassServiceClient (basicBinding, endPointAddress);
 //this is the class in which the method exists you want to make a service call 
 IService = pay.YourMethodName();
 XMLDocument xmlOut = new XmlDocument();
 //This is to store return value from your method 
 xmlOut.LoadXml(IService);
 //Load the xmlOut with the return value
 XmlNode xmlNode = xmlOut.SelectSingleNode("ParentElement/ChildElement");
 //Search for your element name where you want to get the value
 string strValue = xmlNode.InnerText;
 //this gives the element value

接下来,使用DataTable类,通过创建新行

来加载strValue
DataTable dt = new DataTable();
DataRow dr = dt.NewRow();
dr["ValueToInsertIntoDb"] = strValue;
dr.Rows.Add(dr);

之后将dt分配给对象变量。

Dts.Variables["User::Values"].Value = dt;

接下来,使用另一个数据流任务,其中使用Script组件并在ReadOnlyVariables中选择变量。在脚本组件内部,您必须遍历DataTable数据集。这是代码应该是

 DataTable dt = (DataTable)Variables.Values
   foreach (DataRow dr in dt.Rows)
   {
     ScriptComponentOutputBuffer.AddRow()
     ScriptComponentOutputBuffer.Column1 = dr["ValueToInsertIntoDb"].ToString();
   }
   //ScriptComponentOutputBuffer.Column1 --You need to manually add this column on output columns of your scriptcomponent

接下来,将脚本组件连接到OLEDB Command或OLE DB Destination并将值插入数据库。

答案 1 :(得分:0)

在解决方案资源管理器中添加服务引用。这将允许您在代码中引用Web服务并通过对象浏览器进行浏览。我通常首先通过浏览器访问WSDL以探索属性和方法。

如果脚本任务不是绝对要求,您可以尝试Web服务任务: https://www.mssqltips.com/sqlservertip/3272/example-using-web-services-with-sql-server-integration-services/