加载Newtonsoft Json反序列化程序

时间:2015-09-08 14:06:37

标签: c# ssis json.net

嗨,当我构建解决方案时,它很好,但在执行期间失败,跟随错误:

  

at System.RuntimeMethodHandle.InvokeMethod(Object target,Object [] arguments,Signature sig,Boolean constructor)      at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj,Object [] parameters,Object [] arguments)      在System.Reflection.RuntimeMethodInfo.Invoke(Object obj,BindingFlags invokeAttr,Binder binder,Object []参数,CultureInfo文化)      at System.RuntimeType.InvokeMember(String name,BindingFlags bindingFlags,Binder binder,Object target,Object [] providedArgs,ParameterModifier [] modifiers,CultureInfo culture,String [] namedParams)      在Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTATaskScriptingEngine.ExecuteScript()

我会提到我已使用SSISJavaScriptSerializer Deserializer成功运行了它 不确定我做错了什么? 为此类.Net40添加外部参考(对于SQL服务器2012似乎是正确的。) 有什么建议吗?

下面的代码示例:

public partial class ScriptMain : Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase
{
    // dataResponse looks like that {"access_token":"bla","expires_in":222}
    // Old Code
    // JSONElements elements = new JavaScriptSerializer().Deserialize<JSONElements>(dataResponse);
    JSONElements elements = JsonConvert.DeserializeObject<JSONElements>(dataResponse);
}   

public class JSONElements
{
    public string access_token { set; get; }
    public int expired_in { set; get; }
}

2 个答案:

答案 0 :(得分:0)

我认为库未在GAC注册,何时执行SSIS从TEMP复制并运行。从那里调用外部库并查看系统变量中的已注册位置“路径”。尝试修改它但无法重启机器 - 没有Microsoft SDK的服务器。所以不要再看到那个

的解决方案了

答案 1 :(得分:0)

尝试更换

JsonConvert.DeserializeObject<JSONElements>(dataResponse);

使用

System.Web.Script.Serialization.JavaScriptSerializer serial = new System.Web.Script.Serialization.JavaScriptSerializer();
JSONElements incoming = serial.Deserialize<JSONElements>(dataResponse);