通过方法'System.Web.Helpers.Json..cctor()'尝试访问方法'System.Web.Helpers.Json.CreateSerializer()'失败

wpf*_*abe 64 .net c# json .net-4.0

System.Web.Helpers.Json用于将一些JSON反序列化到dynamicNET 4中.以下行失败并出现此错误:TypeInitializationException: Attempt by method 'System.Web.Helpers.Json..cctor()' to access method 'System.Web.Helpers.Json.CreateSerializer()' failed.

var json = Json.Decode(response);
Run Code Online (Sandbox Code Playgroud)

response是一个冗长但有效的JSON.这可能是什么问题?我试过LINQPad和一个简短的手工JSON,它的工作原理.这是某种配置问题吗?

[编辑]

这是实际的JSON示例.看起来内容几乎无关紧要.当它在一个全新的控制台应用程序或LINQPad中运行时,它按预期工作.但是,如果您尝试从全新的Windows窗体应用程序运行相同的代码,则会出现上述错误.

var json = Json.Decode("{\"r\":{\"0\":{\"id\":\"2\"},\"1\":{\"id\":\"33\"}}}");
Run Code Online (Sandbox Code Playgroud)

[EDIT2]

实际上,事实证明这与项目类型无关.如果正在调试项目,则抛出异常.如果只是运行,则不会发生异常.奇怪,是吗?

wpf*_*abe 142

我忘记了这个问题,在此期间我找到了答案.我认为它在微软的Connect网站上,但我不确定.所以现在让我们分享吧.

基本上,为了解决此问题,您需要确保在Debug下的项目设置中取消选中 "启用Visual Studio主机进程" .我不确定为什么会这样,但这绝对是一种"修复"它的方法.一旦我发现了这个,我就停止寻找答案了.这对我来说已经足够了.

设置/调试

  • 为我工作.我无法想象我怎么会开始自己找到这个. (7认同)
  • 对于未来的Google员工,此解决方案还帮助错误"尝试方法'System.Web.Helpers.Json.Decode(System.String)'访问字段'System.Web.Helpers.Json._serializer'失败." (4认同)
  • 我不确定这是否合适.那只是我的电话吗?我认为任何提供赏金的人都有权获得这个(或者我错了?). (2认同)

Rol*_*and 7

如果您在部分信任中运行,也会发生这种情况.请查看此处异常说明以了解可能的原因

我不知道这是否适用于您,因为您没有在Web上下文中运行,但这是该链接描述的内容:

在以下情况下抛出此异常:

  • 通过使用反射从部分受信任的代码访问无法从正常编译代码访问的私有,受保护或内部方法.

  • 从透明代码访问安全关键方法.

  • 类库中方法的访问级别已更改,并且尚未重新编译引用该库的一个或多个程序集.