C# SSIS脚本任务-输入字符串格式不正确
我对SSIS有一个非常奇怪的问题,我想知道是否有其他人也有类似的问题 在数据流中,我有一个从MSSQL表中获取数据的源,然后将其提供给数据转换脚本任务 脚本任务如下所示: 脚本任务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
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块,它击中的东西要早得多,为什么设置断点修复它更奇怪。