2016-09-06 8 views
1

私はAutoRestを使用して、スワッガー定義ファイルからREST API用のC#クラスを自動生成しています。Iso8601TimeSpanConverterをJsonConverterリストに追加するとArrayTypeMismatch例外が発生する

問題は、クライアントクラス初期化methosが実行されるとき、それは次のコードにArrayTypeMismatch例外をスローすることである:コードの

SerializationSettings = new JsonSerializerSettings 
{ 
    Formatting = Formatting.Indented, 
    DateFormatHandling = DateFormatHandling.IsoDateFormat, 
    DateTimeZoneHandling = DateTimeZoneHandling.Utc, 
    NullValueHandling = NullValueHandling.Ignore, 
    ReferenceLoopHandling = ReferenceLoopHandling.Serialize, 
    ContractResolver = new ReadOnlyJsonContractResolver(), 
    Converters = new List<JsonConverter> 
     { 
      new Iso8601TimeSpanConverter() 
     } 
} 

問題片Iso8601TimeSpanConverterがJsonConvertersのリストに追加されます。

これは、このコードをVSIXパッケージで実行している場合にのみ発生します。スタンドアロンアプリでは正常に動作します。

Newtonsoft.Jsonの複数のバージョンとの読み込みと衝突が関係しているのだろうか?

アイデア?

+0

例外のタイプ、メッセージ、内部例外、およびトレースバックを含む例外の完全な 'ToString()'出力を含めるように質問してください。 – dbc

+0

WPF DesginModeの内部でこの例外が発生しました!残念ながら特別な例外メッセージはありません: 'System.ArrayTypeMismatchException occurred; HResult = -2146233085;メッセージ=配列と互換性のない型として要素にアクセスしようとしました。ソース= mscorlib' 'StackTrace:System.Collections.Generic.List'1.Add(Tアイテム)Client.WebApi.MyRestApi.Initialize()' – Marcel

答えて

0

私は同じ問題に遭遇しますが、最終的にapp.configを使用してNewtonsoft.Jsonバインディングを統合することで解決します。

<configuration> 
    <runtime> 
    <assemblyBinding> 
     <dependentAssembly> 
     <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-9.0.0.0" newVersion="9.0.0.0" /> 
     </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 
</configuration> 

問題がIso8601TimeSpanConverterあなたがAutoRestで使用しているものとはJsonConverterの異なるバージョンを継承するかもしれないということです。

関連する問題