2015-09-08 3 views
1

Привет, когда я строить решение, это хорошо, но во время исполнения его неудачу с следующие ошибки:Ошибка при загрузке Newtonsoft Json десериализатор

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

Я упомяну, что я успешно запустить его в SSIS с JavaScriptSerializer 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; } 
} 
+1

Вы опустили начало сообщения об ошибке - это, вероятно, самая важная часть. :) – Ulric

+0

Поле с сообщениями с заголовком «Исключение было выбрано целью вызова». Ничего больше. Это находится в пределах SSIS, поэтому я не могу самостоятельно отлаживать скрипт. – Jakub

+0

Вы теперь используете это на другой машине, чем машина, против которой вы разрабатывали? Если это так, вам нужно установить dll в gac на целевой машине. – billinkc

ответ

0

Я думаю, что это библиотека не зарегистрирована в GAC и когда выполнять SSIS делает копию и запустить из TEMP. Оттуда вызывается внешняя библиотека и просматривается в зарегистрированных местах «Путь» в системных переменных. Попробуйте изменить его, но не может перезагрузить компьютер - его сервер без Microsoft SDK. Поэтому не вижу больше решения для этого