gpt4 book ai didi

.net - Json.NET 在 .NET 4 下说 "operation may destabilize the runtime",但在 .NET 3.5 下不是

转载 作者:行者123 更新时间:2023-12-04 18:51:31 24 4
gpt4 key购买 nike

这段代码:

namespace ConsoleApplication3
{
class Program
{
static void Main(string[] args)
{
var client = new WebClient();
client.Headers.Add("User-Agent", "Nobody");
var response = client.DownloadString(new Uri("http://www.hanselman.com/smallestdotnet/json.ashx"));

var j = JsonConvert.DeserializeObject<SmallestDotNetThing>(response);
}

public class SmallestDotNetThing
{
public DotNetVersion latestVersion { get; set; }
public List<DotNetVersion> allVersions { get; set; }
public List<DotNetVersion> downloadableVersions { get; set; }
}

public class DotNetVersion
{
public int major { get; set; }
public int minor { get; set; }
public string profile { get; set; }
public int? servicePack { get; set; }
public string url { get; set; }
}

}
}

在 .NET 4 下使用 .NET 4 版本的 JSON.NET 时,将在反序列化上抛出异常“操作可能会破坏运行时的稳定性”。

但是,将目标切换到 3.5(并将 JSON.NET 引用更改为 3.5 版本)效果很好。我正在使用 NuGet 的 JSON.NET。

想法?

最佳答案

依赖 AllowPartiallyTrustedCallersAttribute 的 .NET 4 运行时中的安全模型似乎发生了变化(参见 Karel Zikmunds answer.NET Security Blog 条目)。

Karel 还发布了一些解决方案:

You have these options:

  1. If you don't need APTCA, remove it.
  2. Run SecAnnotate tool from SDK and fix all transparency violations - http://blogs.msdn.com/b/shawnfa/archive/2009/11/18/using-secannotate-to-analyze-your-assemblies-for-transparency-violations-an-example.aspx.
  3. Use Level1 attribute to switch your assembly to v2 security model - http://blogs.msdn.com/b/shawnfa/archive/2009/11/11/transparency-models-a-tale-of-two-levels.aspx


另一个 post在 Stackoverflow 上,C# 中的协方差和逆变可能存在问题

关于.net - Json.NET 在 .NET 4 下说 "operation may destabilize the runtime",但在 .NET 3.5 下不是,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5511171/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com