Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net SSIS脚本组件-仅在调试模式下工作_.net_Ssis - Fatal编程技术网

.net SSIS脚本组件-仅在调试模式下工作

.net SSIS脚本组件-仅在调试模式下工作,.net,ssis,.net,Ssis,我有一个恼人的问题 我有一个SSIS脚本组件(数据流中用于避免混淆的组件),它正在调用GetRESTAPI。现在我是一个SSIS人员,但我已经拼凑了一个.net脚本,并提供了一些有用的帮助,但只有在设置了断点的情况下,即使断点已被禁用 一旦删除断点,就会出现以下错误 位于Microsoft.SqlServer.Dts.Runtime.Wrapper.IDTSVariables100.get_项(对象索引) at Variables.get_AddressBookIdDownload() 在Scr

我有一个恼人的问题

我有一个SSIS脚本组件(数据流中用于避免混淆的组件),它正在调用GetRESTAPI。现在我是一个SSIS人员,但我已经拼凑了一个.net脚本,并提供了一些有用的帮助,但只有在设置了断点的情况下,即使断点已被禁用

一旦删除断点,就会出现以下错误

位于Microsoft.SqlServer.Dts.Runtime.Wrapper.IDTSVariables100.get_项(对象索引) at Variables.get_AddressBookIdDownload() 在ScriptMain.CreateNewOutputRows()处 在UserComponent.PrimeOutput(Int32输出、Int32[]输出、PipelineBuffer[]缓冲区、OutputNameMap输出映射) 位于Microsoft.SqlServer.Dts.Pipeline.ScriptComponentHost.PrimeOutput(Int32输出、Int32[]输出、PipelineBuffer[]缓冲区)

有人(合理地)询问.net代码是什么,以便进行故障排除。。。所以我把它贴在下面。。。包括所有字段映射,以防出现问题

#region Namespaces
using System;
using System.Data;
using Microsoft.SqlServer.Dts.Pipeline.Wrapper;
using Microsoft.SqlServer.Dts.Runtime.Wrapper;
using System.Net;
using Microsoft.SqlServer.Dts.Runtime;
using System.Windows.Forms;
using System.IO;
using System.Web.Script.Serialization;
#endregion

#region
[Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute]
public class ScriptMain : UserComponent
{
    public override void PreExecute()
    {
        base.PreExecute();
    }

    public override void PostExecute()
    {
        base.PostExecute();
    }

    public override void CreateNewOutputRows()
    {

         //Get SSIS Variables
        string apiUserName = Variables.APIUsername;
        string apiPassword = Variables.APIPassword;
        int campaignId = (int) Variables.Campaign;

        //Set Webservice URL
        string wUrl = "https://api.aaaaaaaa.com/" + String.Concat(campaignId, "/summary");
        String base64 = Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(apiUserName + ":" + apiPassword));
        try
        {
            //Call getWebServiceResult to return our WorkGroupMetric array
            RootObject[] outPutMetrics = GetWebServiceResult(wUrl, base64 );

            //For each group of metrics output records
            //these are the column names defined in output columns in object
            foreach (var metric in outPutMetrics)
            {
                Output0Buffer.AddRow();

                Output0Buffer.dateSent = (metric.dateSent);
                Output0Buffer.numUniqueOpens = metric.numUniqueOpens;
                Output0Buffer.numUniqueTextOpens = metric.numUniqueTextOpens;
                Output0Buffer.numTotalUniqueOpens = metric.numTotalUniqueOpens;
                Output0Buffer.numOpens = metric.numOpens;
                Output0Buffer.numTextOpens = metric.numTextOpens;
                Output0Buffer.numTotalOpens = metric.numTotalOpens;
                Output0Buffer.numClicks = metric.numClicks;
                Output0Buffer.numTextClicks = metric.numTextClicks;
                Output0Buffer.numTotalClicks = metric.numTotalClicks;
                Output0Buffer.numPageViews = metric.numPageViews;
                Output0Buffer.numTotalPageViews = metric.numTotalPageViews;
                Output0Buffer.numTextPageViews = metric.numTextPageViews;
                Output0Buffer.numForwards = metric.numForwards;
                Output0Buffer.numTextForwards = metric.numTextForwards;
                Output0Buffer.numEstimatedForwards = metric.numEstimatedForwards;
                Output0Buffer.numTextEstimatedForwards = metric.numTextEstimatedForwards;
                Output0Buffer.numTotalEstimatedForwards = metric.numTotalEstimatedForwards;
                Output0Buffer.numReplies = metric.numReplies;
                Output0Buffer.numTextReplies = metric.numTextReplies;
                Output0Buffer.numTotalReplies = metric.numTotalReplies;
                Output0Buffer.numHardBounces = metric.numHardBounces;
                Output0Buffer.numTextHardBounces = metric.numTextHardBounces;
                Output0Buffer.numTotalHardBounces = metric.numTotalHardBounces;
                Output0Buffer.numSoftBounces = metric.numSoftBounces;
                Output0Buffer.numTextSoftBounces = metric.numTextSoftBounces;
                Output0Buffer.numTotalSoftBounces = metric.numTotalSoftBounces;
                Output0Buffer.numUnsubscribes = metric.numUnsubscribes;
                Output0Buffer.numTextUnsubscribes = metric.numTextUnsubscribes;
                Output0Buffer.numTotalUnsubscribes = metric.numTotalUnsubscribes;
                Output0Buffer.numIspComplaints = metric.numIspComplaints;
                Output0Buffer.numTextIspComplaints = metric.numTextIspComplaints;
                Output0Buffer.numTotalIspComplaints = metric.numTotalIspComplaints;
                Output0Buffer.numMailBlocks = metric.numMailBlocks;
                Output0Buffer.numTextMailBlocks = metric.numTextMailBlocks;
                Output0Buffer.numTotalMailBlocks = metric.numTotalMailBlocks;
                Output0Buffer.numSent = metric.numSent;
                Output0Buffer.numTextSent = metric.numTextSent;
                Output0Buffer.numTotalSent = metric.numTotalSent;
                Output0Buffer.numRecipientsClicked = metric.numRecipientsClicked;
                Output0Buffer.numDelivered = metric.numDelivered;
                Output0Buffer.numTextDelivered = metric.numTextDelivered;
                Output0Buffer.numTotalDelivered = metric.numTotalDelivered;
                Output0Buffer.percentageDelivered = metric.percentageDelivered;
                Output0Buffer.percentageUniqueOpens = metric.percentageUniqueOpens;
                Output0Buffer.percentageOpens = metric.percentageOpens;
                Output0Buffer.percentageUnsubscribes = metric.percentageUnsubscribes;
                Output0Buffer.percentageReplies = metric.percentageReplies;
                Output0Buffer.percentageHardBounces = metric.percentageHardBounces;
                Output0Buffer.percentageSoftBounces = metric.percentageSoftBounces;
                Output0Buffer.percentageUsersClicked = metric.percentageUsersClicked;
                Output0Buffer.percentageClicksToOpens = metric.percentageClicksToOpens ;             
            }

        }
        catch (Exception e)
        {
            //FailComponent(e.ToString());
            if (e.Message != null)
            {
                string ExceptionMessage = e.Message;

            }

        }

    }

    /// <returns>An array of WorkGroupMetric composed of the de-serialized JSON</returns>
    private RootObject[] GetWebServiceResult(string wUrl, string base64)
    {

        HttpWebRequest httpWReq = (HttpWebRequest)WebRequest.Create(wUrl);

        httpWReq.Headers.Add("Authorization", "Basic " + base64);
        HttpWebResponse httpWResp = (HttpWebResponse)httpWReq.GetResponse();
        RootObject[] jsonResponse = null;

        try
        {
            //Test the connection
            if (httpWResp.StatusCode == HttpStatusCode.OK)
            {

            Stream responseStream = httpWResp.GetResponseStream();
            dataLength = httpWResp.ContentLength;  

            string jsonString = null;

            //Set jsonString using a stream reader
            using (StreamReader reader = new StreamReader(responseStream))
            {
                jsonString = reader.ReadToEnd().Replace("\\", "");
                reader.Close();
            }
            //Deserialize our JSON
            JavaScriptSerializer sr = new JavaScriptSerializer();
            jsonResponse = sr.Deserialize<RootObject[]>(jsonString);

            }
            //Output connection error message
            else
            {
                FailComponent(httpWResp.StatusCode.ToString());

            }
        }
        //Output JSON parsing error
        catch (Exception ex)
        {
                if (ex.Message != null)
                {
                    string ExceptionMessage = ex.Message;

                }
        }
        return jsonResponse;

    }

    /// <summary>
    /// Outputs error message
    /// </summary>
    /// <param name="errorMsg">Full error text</param>
    private void FailComponent(string errorMsg)
    {
        bool fail = false;
        IDTSComponentMetaData100 compMetadata = this.ComponentMetaData;
        compMetadata.FireError(1, "Error Getting Data From Webservice!", errorMsg, "", 0, out fail);

    }

}
#endregion

#region JSON Class
//Class to hold our work group metrics


    public class RootObject
    {
        public DateTime dateSent { get; set; }
        public int numUniqueOpens { get; set; }
        public int numUniqueTextOpens { get; set; }
        public int numTotalUniqueOpens { get; set; }
        public int numOpens { get; set; }
        public int numTextOpens { get; set; }
        public int numTotalOpens { get; set; }
        public int numClicks { get; set; }
        public int numTextClicks { get; set; }
        public int numTotalClicks { get; set; }
        public int numPageViews { get; set; }
        public int numTotalPageViews { get; set; }
        public int numTextPageViews { get; set; }
        public int numForwards { get; set; }
        public int numTextForwards { get; set; }
        public int numEstimatedForwards { get; set; }
        public int numTextEstimatedForwards { get; set; }
        public int numTotalEstimatedForwards { get; set; }
        public int numReplies { get; set; }
        public int numTextReplies { get; set; }
        public int numTotalReplies { get; set; }
        public int numHardBounces { get; set; }
        public int numTextHardBounces { get; set; }
        public int numTotalHardBounces { get; set; }
        public int numSoftBounces { get; set; }
        public int numTextSoftBounces { get; set; }
        public int numTotalSoftBounces { get; set; }
        public int numUnsubscribes { get; set; }
        public int numTextUnsubscribes { get; set; }
        public int numTotalUnsubscribes { get; set; }
        public int numIspComplaints { get; set; }
        public int numTextIspComplaints { get; set; }
        public int numTotalIspComplaints { get; set; }
        public int numMailBlocks { get; set; }
        public int numTextMailBlocks { get; set; }
        public int numTotalMailBlocks { get; set; }
        public int numSent { get; set; }
        public int numTextSent { get; set; }
        public int numTotalSent { get; set; }
        public int numRecipientsClicked { get; set; }
        public int numDelivered { get; set; }
        public int numTextDelivered { get; set; }
        public int numTotalDelivered { get; set; }
        public double percentageDelivered { get; set; }
        public double percentageUniqueOpens { get; set; }
        public double percentageOpens { get; set; }
        public double percentageUnsubscribes { get; set; }
        public double percentageReplies { get; set; }
        public double percentageHardBounces { get; set; }
        public double percentageSoftBounces { get; set; }
        public double percentageUsersClicked { get; set; }
        public double percentageClicksToOpens { get; set; }
    }

#endregion
#区域名称空间
使用制度;
使用系统数据;
使用Microsoft.SqlServer.Dts.Pipeline.Wrapper;
使用Microsoft.SqlServer.Dts.Runtime.Wrapper;
Net系统;
使用Microsoft.SqlServer.Dts.Runtime;
使用System.Windows.Forms;
使用System.IO;
使用System.Web.Script.Serialization;
#端区
#区域
[Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute]
公共类ScriptMain:UserComponent
{
公共覆盖无效预执行()
{
base.PreExecute();
}
公共重写void PostExecute()
{
base.PostExecute();
}
公共覆盖无效CreateNewOutputRows()
{
//获取SSIS变量
字符串apiUserName=Variables.apiUserName;
字符串apiPassword=Variables.apiPassword;
int-campaid=(int)变量;
//设置Web服务URL
字符串wUrl=”https://api.aaaaaaaa.com/“+String.Concat(活动ID,”/summary”);
String base64=Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(apiUserName+“:“+apiPassword));
尝试
{
//调用getWebServiceResult返回我们的WorkGroupMetric数组
RootObject[]outPutMetrics=GetWebServiceResult(wUrl,base64);
//对于每组度量输出记录
//这些是在对象的输出列中定义的列名
foreach(outPutMetrics中的var度量)
{
Output0Buffer.AddRow();
Output0Buffer.dateSent=(metric.dateSent);
Output0Buffer.numiniqueopens=metric.numiniqueopens;
Output0Buffer.numUniqueTextOpens=metric.numUniqueTextOpens;
Output0Buffer.numtotaluniqueeopens=metric.numtotaluniqueeopens;
Output0Buffer.numOpens=公制.numOpens;
Output0Buffer.numTextOpens=metric.numTextOpens;
Output0Buffer.numTotalOpens=metric.numTotalOpens;
Output0Buffer.numClicks=metric.numClicks;
Output0Buffer.numTextClicks=metric.numTextClicks;
Output0Buffer.numTotalClicks=metric.numTotalClicks;
Output0Buffer.numPageViews=metric.numPageViews;
Output0Buffer.numTotalPageViews=metric.numTotalPageViews;
Output0Buffer.numTextPageViews=metric.numTextPageViews;
Output0Buffer.numForwards=公制.numForwards;
Output0Buffer.numTextForwards=metric.numTextForwards;
Output0Buffer.numEstimatedForwards=公制.numEstimatedForwards;
Output0Buffer.numTextEstimatedForwards=metric.numTextEstimatedForwards;
Output0Buffer.numTotalEstimatedForwards=metric.numTotalEstimatedForwards;
Output0Buffer.numReplies=metric.numReplies;
Output0Buffer.numTextReplies=metric.numTextReplies;
Output0Buffer.numTotalReplies=metric.numTotalReplies;
Output0Buffer.numhardbunces=公制.numhardbunces;
Output0Buffer.numTextHardBunces=metric.numTextHardBunces;
Output0Buffer.numtotalhardbunces=metric.numtotalhardbunces;
Output0Buffer.numSoftBounces=metric.numSoftBounces;
Output0Buffer.numTextSoftBounces=metric.numTextSoftBounces;
Output0Buffer.numTotalSoftBounces=metric.numTotalSoftBounces;
Output0Buffer.numSubscribes=metric.numSubscribes;
Output0Buffer.numTextUnsubscribes=metric.numTextUnsubscribes;
Output0Buffer.numTotalUnsubscribes=metric.numTotalUnsubscribes;
Output0Buffer.nummispComplaints=metric.nummispComplaints;
Output0Buffer.numTextIspComplaints=metric.numTextIspComplaints;
Output0Buffer.numtotalispcompliants=metric.numtotalispcompliants;
Output0Buffer.numMailBlocks=公制.numMailBlocks;
Output0Buffer.numTextMailBlocks=metric.numTextMailBlocks;
Output0Buffer.numTotalMailBlocks=metric.numTotalMailBlocks;
Output0Buffer.numSent=metric.numSent;
Output0Buffer.numtexsent=metric.numtexsent;
Output0Buffer.numTotalSent=metric.numTotalSent;
Output0Buffer.numRecipientsClicked=公制.numRecipientsClicked;
Output0Buffer.numDelivered=metric.numDelivered;
Output0Buffer.numTextDelivered=metric.numTextDelivered;
Output0Buffer.numTotalDelivered=metric.numTotalDelivered;
Output0Buffer.percentageDelivered=公制.percentageDelivered;
Output0Buffer.percentageUniqueOpens=公制.percentageUniqueOpens;
Output0Buffer.percentageOpens=公制.percentageOpens;
Output0Buffer.percentageUnsubscribes=公制.percentageUnsubscribes;
输出0缓冲区