2017-02-08 2 views
0

ниже код работает в Visual Studio, но не скод работает в VS, но не в Azure функций

Functions.HttpTriggerCSharp1. Newtonsoft.Json: Type specified in JSON 'JliffModel.Segment, JliffModel, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' is not compatible with 'JliffModel.ISubUnit, JliffModel, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'. Path 'units[0].segments[0].$type', line 9, position 28.

в Azure функций. Это проблема со временем выполнения функций?

var model2 = new JliffModel.File("en-US", "de-DE", 
     new List<JliffModel.Unit>() 
     { 
      new JliffModel.Unit("1", 
       new JliffModel.Segment(
        new List<JliffModel.IElement>() {new JliffModel.TextElement("New fluent source.")}, 
        new List<JliffModel.IElement>() {new JliffModel.TextElement("New fluent target.")} 
       ) 
      ), 
      new JliffModel.Unit("2", new List<JliffModel.ISubUnit>() { 
       new JliffModel.Segment(
        new List<JliffModel.IElement>() {new JliffModel.TextElement("Unit 2, Segment 1 source")}, 
        new List<JliffModel.IElement>() {new JliffModel.TextElement("Unit 2, Segment 1 target")} 
       ), 
       new JliffModel.Ignorable() 
      }) 
     }); 

    var binder = new JliffModel.JliffSerializationBinder("JliffModel.{0}, JliffModel"); 

    string output = JsonConvert.SerializeObject(model2, 
     Formatting.Indented, 
     new JsonSerializerSettings 
     { 
      ContractResolver = new CamelCasePropertyNamesContractResolver(), 
      TypeNameHandling = TypeNameHandling.Auto, 
      Binder = binder 
     }); 

    var model = JsonConvert.DeserializeObject<JliffModel.File>(output, 
       new JsonSerializerSettings 
       { 
        TypeNameHandling = TypeNameHandling.Auto, 
        Binder = binder 
       }); 

ответ

0

Возможно, вы используете другую версию Newtonsoft.Json локально, как и для функций azure. В журналах вы можете увидеть, какая версия загружена, например:

xxxx-xx-xxT19:02:52.800 Installing Newtonsoft.Json x.x.x. 

Посмотрите, есть ли какие-либо отличия. Вы можете поместить определенную версию в файл project.json:

{ 
    "frameworks": { 
    "net46":{ 
     "dependencies": { 
     "Newtonsoft.Json": "9.0.1" 
     } 
    } 
    } 
} 
Смежные вопросы