导致VerificationException操作的JSON.NET可能会破坏运行时

时间:2018-03-14 15:40:55

标签: .net wcf json.net iis-7.5

最近,在其中一个Web应用程序中,我们在尝试使用JSON.NET序列化对象时开始获取VerificationException。

我知道JSON.NET启用了CLR验证,因为它使用[assembly: AllowPartiallyTrustedCallers],但是所有下面的代码示例都会抛出相同的异常

1) JsonConvert.SerializeObject(log);

2) var settings = new Newtonsoft.Json.JsonSerializerSettings
        {
            Formatting = Newtonsoft.Json.Formatting.Indented
        };

3) var traceWriter = new MemoryTraceWriter();

它发生在特定的机器(A)而不是另一个(B),低于我为解决问题所做的工作: -

  1. 在机器B上执行代码A,反之亦然。
  2. 比较A和B之间安装的.NET版本。
  3. 比较两台计算机之间的已安装功能,角色,IIS设置。
  4. 实现了一个使用JSON.NET的小型控制台,它在机器A上正常工作。
  5. 使用过PEverify和SecAnnotation,一切似乎都很好。
  6. 干净安装Frameworks是否成功。
  7. 尝试安装几个.NET KB。
  8. .NET 4.7.1

    JSON.NET 10.0.3

    IIS 7.5

    Windows Server 2008 R2

    修改1 ToString输出

    System.Security.VerificationException: Operation could destabilize the runtime.
       at Newtonsoft.Json.JsonConvert.SerializeObject(Object value)
    

    编辑2 从DebugDiag调用堆栈

        KERNELBASE!RaiseException+3d 
    MSVCR120_CLR0400!CxxThrowException+c3 
    clr!NGenCreateNGenWorker+d33c 
    clr!TranslateSecurityAttributes+82981 
    [[HelperMethodFrame]] 
    Newtonsoft.Json.JsonConvert.SerializeObject(System.Object)+15 
    

    异常的原因可能是什么?

0 个答案:

没有答案