Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将Iso8601TimeSpanConverter添加到JsonConverter列表会引发ArrayTypeMismatch异常_C#_Json.net_Swagger_Vsix_Autorest - Fatal编程技术网

C# 将Iso8601TimeSpanConverter添加到JsonConverter列表会引发ArrayTypeMismatch异常

C# 将Iso8601TimeSpanConverter添加到JsonConverter列表会引发ArrayTypeMismatch异常,c#,json.net,swagger,vsix,autorest,C#,Json.net,Swagger,Vsix,Autorest,我使用AutoRest从一个Swagger定义文件为restapi自动生成一个c#类 问题在于,当执行客户机类初始化方法时,它会在以下代码中引发ArrayTypeMismatch异常: SerializationSettings = new JsonSerializerSettings { Formatting = Formatting.Indented, DateFormatHandling = DateFormatHandling.IsoDateFormat, Dat

我使用AutoRest从一个Swagger定义文件为restapi自动生成一个c#类

问题在于,当执行客户机类初始化方法时,它会在以下代码中引发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()
        }
}
SerializationSettings=新的JSONSerializationSettings
{
格式化=格式化。缩进,
DateFormatHandling=DateFormatHandling.IsoDateFormat,
DateTimeZoneHandling=DateTimeZoneHandling.Utc,
NullValueHandling=NullValueHandling.Ignore,
ReferenceLoopHandling=ReferenceLoopHandling.Serialize,
ContractResolver=新的只读JSONContractResolver(),
转换器=新列表
{
新的Iso8601TimeSpanConverter()
}
}
有问题的代码是添加到JSONConverter列表中的Iso8601TimeSpanConverter

顺便说一句,只有在VSIX包中运行此代码时才会发生这种情况。在一个独立的应用程序上,它运行良好

我想知道这是否与多个版本的Newtonsoft.Json加载和冲突有关


有什么想法吗?

我遇到了同样的问题,但最终通过使用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可能继承的JsonConverter版本与您在自动测试中使用的版本不同

你能不能请你的问题包括异常的完整输出,包括异常类型、消息、内部异常和回溯?我在WPF DesginMode中得到了这个异常!不幸的是,没有特殊的异常消息:
System.ArrayTypeMismatchException发生;HResult=-2146233085;Message=试图以与数组不兼容的类型访问元素。;Source=mscorlib
StackTrace:at System.Collections.Generic.List'1.Add(T项)at Client.WebApi.MyRestApi.Initialize()
在我的情况下,安装newtonsoft软件包时,所有项目中都会自动生成app.config。但是我仍然得到这个错误(v11.0.2)。即使在统一newton软件包之后,我也得到了这个错误。还有其他线索吗?