我在c#4.0中工作以读取签名请求,我使用以下代码
FacebookApp fap = new FacebookApp();
fap.AppId = "789485219211963"; // App ID
fap.AppSecret = "365ee9f5823698536767d608cf572a49";
string requested_Data = Request.Form["signed_request"];
FacebookSignedRequest fsr = fap.ParseSignedRequest(requested_Data);
IDictionary<string, string> myDic = fsr.Dictionary;
string name = myDic["name"];
string algorithm = myDic["algorithm"];
Response.Write(requested_Data + "<br>" + algorithm + "<br>" + name + "<br>");
但在突出显示的行中,我收到了以下异常
无法加载文件或程序集‘Newtonsoft.Json,版本=3.5.0.0,文化=中性,PublicKeyToken=30ad4fe6b2a6eed'或它的一个依赖项。位于程序集的清单定义与程序集引用不匹配。(HRESULT异常:0x80131040)
我下载了Newtonsoft.Json的第1版而不是第2版,但它仍然不起作用。有人能帮我解决这个问题吗?也请指导我阅读签名请求的方式是否正确。如果不正确,请指定正确的方式。
感谢:
我猜你没有加载Newtonsoft.Json v4.0,而不是3.5。3.5的最后一个版本是第8版。
http://json.codeplex.com/releases/view/50552
我想您可能可以在web.config/app.config中进行版本转发,以便使用4.0而不是3.5,因为您使用的某些库可能是针对3.5版本的Newtonsoft构建的。
您可以使用包管理器用它的nuget包"Newtonsoft.Json"更新它。
PM> update-package newtonsoft.json
在包管理器控制台Visual Studio 2013 中
PM> Install-Package Newtonsoft.Json
然后重新启动Visual Studio。
当我遇到这个问题时,我发现你的项目/包中有两个类似的文件夹,一个是6.0.5版本,另一个是5.0.6版本。
我删除了5.0.6,问题就消失了。
在为解决方案升级所有NuGet包后,我的Xamarin.Forms PCL WinPhone8.1项目也遇到了同样的问题。问题出在winPhone8.1项目中的Newtonsoft.Json v9.0.0上。
所有其他项目都运行正常。花了两天时间搜索所有建议,最终通过删除项目、从我的git中提取项目的克隆并添加回解决方案来解决问题。仍然失败(尽管git版本在提交之前运行良好。)
删除了Newtonsoft的参考,重新安装了旧版本8.0.3,然后通过NuGet升级到V9.0.0。
然后从winPhone8.1项目Bin/ARM/Debug、Bin/x86/Debug以及Obj/ARM/Debug/MSL和MDIL目录中删除了对Newtonsoft的所有引用。完成了生成并成功。
打开Package Manager控制台并执行以下操作:
update-package newtonsoft.json
这对我很有效。
PM>更新包newtonsoft.json它工作于