【问题标题】:facebook c# 5 - FacebookWebClient throws Typeinitializer-exceptionfacebook c# 5 - FacebookWebClient 抛出 Typeinitializer-exception
【发布时间】:2011-10-02 03:51:37
【问题描述】:

我的问题如下:我刚刚从使用 Facebook C# API 4 -> v. 5.0.50(截至 2011-07-11)迁移,因此我不得不更改一些代码行并开始使用FacebookWebClient 而不是以前的 FacebookApp。我使用这个类来导航 Graph API。我在 WCF 服务中使用该功能,该服务仅接收 access_token 作为参数,并将其传递给 FacebookWebClient。

在 v.4 下一切正常,但是在替换和重新引用 dll 后,应用程序开始抛出异常“'Facebook.FacebookApplication' 的类型初始化程序抛出异常。


异常堆栈跟踪是:

在 e:\Prabir\Documents\Projects\facebooksdk\v5.0.50\Source\Facebook\FacebookClient.cs:Facebook.Web.FacebookWebClient..ctor 的第 48 行中的 Facebook.FacebookClient..ctor(String accessToken) e:\Prabir\Documents\Projects\facebooksdk\v5.0.50\Source\Facebook.Web\FacebookWebClient.cs 中的字符串 accessToken):Korito.MyKorito.FetchKorito 的第 36 行(字符串令牌)在 Korito.MyKorito.KoritoAPI(字符串令牌) 在 SyncInvokeKoritoAPI(Object , Object[] , Object[] ) 在 System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object[] 输入, Object[]& 输出) 在 System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin( MessageRpc& rpc) 在 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc) 在 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(MessageRpc& rpc) 在 System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)


我(仅)引用了以下 dll-s:

  • facebook.dll
  • facebook.web.dll
  • facebook.web.mvc.dll

代码段如下:

var client = new Facebook.Web.FacebookWebClient("/*auth_token_received_as_a_parameter*/"); 动态我 = client.Get("/me");

我使用 .net 4 框架。

非常感谢任何帮助! 干杯, 阿洛伊斯

【问题讨论】:

    标签: facebook-c#-sdk


    【解决方案1】:

    当您希望 SDK 使用签名请求或 cookie 自动添加访问令牌时,通常使用 FacebookWebClient。

    var fb = new FacebookWebClient();
    

    因为您将访问令牌作为参数。您可以只引用 Facebook.dll 并改用 FacebookClient。

    var client = new FacebookClient("access_token");
    

    您可以继续使用已在 v5.x 中移至 Facebook.Web.dll 的 FacebookApp(您可能在智能感知中看不到它,因为它是隐藏的,但它仍然可以工作,因为我们试图保持与 v4 的最大兼容性。注意:但它已被标记为过时,这使用户可以轻松地将他们的应用从 v4 迁移到 v5。)

    【讨论】:

    • 感谢您 prabir 的回复,并祝贺您的​​出色工作。我已经尝试过 FacebookWebClient 和 FacebookClient,它们的行为都相同。 FacebookApp 在这种情况下也不再工作。我在控制台应用程序中重现了相同的情况,起初我只导入了您的 dll(来自 net40-client 的 facebook.dll 和来自 net40 的 facebook.web.dll),但没有成功。经过一些研究,我发现我需要包含 Newtonsoft.Json,我这样做了,并且控制台应用程序现在可以正常工作。但这不适用于 WCF 应用程序。我猜问题出在 iis 中?
    • 您使用的是哪个版本?从 5.0.10 开始,我们删除了对 Newtonsoft.Json 的依赖,因为我们使用了一个新的轻量级内置 json 库,名为 simplejson.codeplex.com
    • 我用的是5.0.50版本。我无法解决 WCF 中的问题,所以我回到了 v4。 v5 与我在同一台机器上使用的控制台应用程序配合得非常好,但在 WCF 服务中使用时无缘无故失败。
    • 您能否使用 WCF 将您的项目上传到某个地方并将其发布在 codeplex 讨论论坛中。我会亲自看看。
    猜你喜欢
    • 2012-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多