C# SSIS脚本任务-输入字符串格式不正确

C# SSIS脚本任务-输入字符串格式不正确,c#,sql-server,ssis,C#,Sql Server,Ssis,我对SSIS有一个非常奇怪的问题,我想知道是否有其他人也有类似的问题 在数据流中,我有一个从MSSQL表中获取数据的源,然后将其提供给数据转换脚本任务 脚本任务如下所示: 脚本任务 public override void Input0_ProcessInputRow(Input0Buffer Row) { string SecurityHeader = (string)Variables.SecurityHeader; string APIToken = (string)Var

我对SSIS有一个非常奇怪的问题,我想知道是否有其他人也有类似的问题

在数据流中,我有一个从MSSQL表中获取数据的源,然后将其提供给数据转换脚本任务

脚本任务如下所示:

脚本任务

public override void Input0_ProcessInputRow(Input0Buffer Row)
{
    string SecurityHeader = (string)Variables.SecurityHeader;
    string APIToken = (string)Variables.APIToken;
    var AppFormID = (string)Row.AppFormID;
    var AppClassName = (string)Row.AppClassName;
    var Lat = Row.Latitude;
    var Long = Row.Longitude;

    var data = new
    {
        record = new
        {
            status = Row.Status.ToString(),
            latitude = Row.Latitude,
            longitude = Row.Longitude,
            form_values = new Dictionary<string, string>()
        }
    };

    if (Row.CreatedBy_IsNull == false) { data.record.form_values["1a09"] = Row.CreatedBy.ToString(); }

    string jsonstring = JsonConvert.SerializeObject(data);
    var client = new RestClient(AppURLRef);
    var request = new RestRequest(Method.POST);
    request.AddHeader(SecurityHeader, APIToken);
    request.AddHeader("content-type", "application/json");
    request.AddParameter("application/json", jsonstring, ParameterType.RequestBody);

    try
    {
        IRestResponse dataresponse = client.Execute(request);
        if (dataresponse.StatusCode.ToString() == "Created")
        {
            var listobject = JsonConvert.DeserializeObject<Lists>(dataresponse.Content);
        }
        else
        {
            Row.OErrorMsg = dataresponse.ErrorMessage.ToString();
        };
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message + "  Data: " + ex.Data + "   Inner Exception:  " + ex.InnerException);
    }
}
public override void Input0\u ProcessInputRow(Input0Buffer行)
{
字符串SecurityHeader=(字符串)变量。SecurityHeader;
字符串APIToken=(字符串)Variables.APIToken;
var AppFormID=(字符串)Row.AppFormID;
var AppClassName=(字符串)Row.AppClassName;
var Lat=行纬度;
var Long=行经度;
var数据=新
{
记录=新
{
status=Row.status.ToString(),
纬度=行。纬度,
经度=行。经度,
表单_值=新字典()
}
};
如果(Row.CreatedBy_IsNull==false){data.record.form_值[“1a09”]=Row.CreatedBy.ToString()}
字符串jsonstring=JsonConvert.SerializeObject(数据);
var client=新的RestClient(AppURLRef);
var请求=新的重新请求(Method.POST);
AddHeader(SecurityHeader,APIToken);
AddHeader(“内容类型”、“应用程序/json”);
AddParameter(“application/json”,jsonstring,ParameterType.RequestBody);
尝试
{
IRestResponse dataresponse=client.Execute(请求);
if(dataresponse.StatusCode.ToString()=“已创建”)
{
var listobject=JsonConvert.DeserializeObject(dataresponse.Content);
}
其他的
{
Row.OErrorMsg=dataresponse.ErrorMessage.ToString();
};
}
捕获(例外情况除外)
{
MessageBox.Show(例如Message+“数据:”+ex.Data+“内部异常:”+ex.InnerException);
}
}
问题

当我在没有任何断点的情况下运行此命令时,我会收到一个消息框,其中显示错误“输入字符串格式不正确”

这真的很奇怪,当我在代码中设置断点时,代码工作得非常完美,因此不可能得到一个行错误

以前有没有人遇到过这样的问题?如果有,您是如何解决的

更新

在遵循一些建议之后,我将try-catch块移动到脚本的开头,这没有导致任何更改try-catch块从未被命中

我试图在输入进程行的最顶端显示一个
MessageBox.Show(“”
),但还是没有命中。有些事情发生在比这两种想法更高的层次上,我无法找出这是在哪里发生的,或者是如何发生的


再次重申错误在MessageBox中,而不是在输出中,并且process选项卡中没有记录任何内容。所以这意味着没有行号,没有有用的错误消息来讨论这个错误发生的位置

将延迟放入MessageBox下一行的catch块中。显示

您可以查看消息框


某个时间消息框进入后台(使用ALT+TAB查找)。

我设法解决了这个问题,在注释了所有内容并删除了所有输入列后,错误仍然发生

我把它归结为微软想惩罚我的另一种方式,我复制了代码,删除了脚本任务,添加了一个新的脚本任务,并将旧代码复制了回去。工作完美


谢谢微软

当错误弹出时,它将显示行号。另外,您可以检查两个转换部分的数据类型,它应该有一个适当的值来获得转换。不确定断点是否会影响失败/成功,但请尝试扩展try块的范围。将开始语句移到
string SecurityHeader
@billinkc前面的一行-好主意,但同样不行,包含了整个脚本,什么也没有。我还在脚本的最顶端添加了一个消息框,由于某种原因,它从未被点击过。在更高的层次上发生了一些事情。。。只是不确定where@sumngh恐怕不行,如果我有一个行号,我就不会问这个问题定义“没有”它出错或没有遇到错误?谢谢@sandeep rawat-这不是问题所在,它从来没有进入try-catch块,它击中的东西要早得多,为什么设置断点修复它更奇怪。