2012-03-02 5 views
0

AdWords APIに接続するにはa .Net libraryを学習しています。最初のブロックは、私のAdWordsUserオブジェクトを使ってサービスを作成しようとしたときに発生します。私はTargetInvocationExceptionを得る:AdWords APIサービスの作成時にTargetInvocationExceptionの原因は何ですか?

Exception has been thrown by the target of an invocation 

内部例外:

The value of the property 'type' cannot be parsed. The error is: Could not 
load file or assembly 'Google.Ads.Common, Version=1.0.0.0, Culture=neutral, 
PublicKeyToken=52807268f2b614dc' or one of its dependencies. The located 
assembly's manifest definition does not match the assembly reference. (Exception 
from HRESULT: 0x80131040) 

を私のグーグルに基づいて、提案主要修正があなたのapp.configにSoapListenerExtensionへの参照を追加することです。私は変更のない2つの方法(質問の最後に表示)を試しました。

私のアプリには、Google.Ads.CommonGoogle.AdWords、およびSystem.Web.Servicesライブラリへの参照が含まれています。あいまいさを排除するための拡張された参照で、私のコードはここにあります。私はパスワードを残せば

var headers = new Dictionary<string, string>(); 
headers.Add("email", Properties.Settings.Default.AdWordsUserName); 
// Rest of the creds 
var _user  = new Google.Api.Ads.AdWords.Lib.AdWordsUser(headers); 
var sig  = Google.Api.Ads.AdWords.Lib.AdWordsService.v201109.CampaignService; 
var rawService = _user.GetService(sig); // The exception is thrown here 
var service = (Google.Api.Ads.AdWords.v201109.CampaignService)rawService; 

は何の変化もありませんので、私はそれが私のcredsを持つ問題だとは思わない:コードははるかにそれを得ていません。

Google.AdWordsライブラリには、Google.Api.Ads.Common.Lib名前空間にいくつかのクラスが含まれていますが、SoapListenerExtensionではありません。これはおそらくこのライブラリの他のDLLの中に隠されていますか?

ここでは、AdWords APIに関連する何十もの質問がありますが、この特定のエラーに関するものは何もありません。


編集

AppDomain.CurrentDomain.GetAssemblies()を使用して、私がロードされたアセンブリをポーリングしてきました。

var cs = Google.Api.Ads.AdWords.Lib.AdWordsService.v201109.CampaignService; 

がこのアセンブリがロードされ、一見成功した:私はこの無害な行が含まれている場合

Loaded: Google.Ads.Common, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null 

を...それはアセンブリのように見えるので、私が持っている符号なしです。確かに、利用可能なAPIの署名付きバージョンがあります。 Maddeninglyは、署名のないバージョンとは構造が異なり、完全修飾名のほとんどは有効ではありません。ふりだしに戻る。


付録

Webサービスメソッド1:

<system.web> 
    <webServices> 
     <soapExtensionTypes> 
     <add type="Google.Api.Ads.Common.Lib.SoapListenerExtension, Google.Ads.Common" priority="1" group="0"/> 
     </soapExtensionTypes> 
    </webServices> 
    </system.web> 

方法2:

<system.web> 
    <webServices> 
     <soapExtensionTypes> 
      <add type="Google.Api.Ads.Common.Lib.SoapListenerExtension, Google.Ads.Common, Version=1.0.0.0, Culture=neutral, PublicKeyToken=52807268f2b614dc" priority="1" group="Low"/> 
     </soapExtensionTypes> 
    </webServices> 
</system.web> 
+0

は、アセンブリバージョンの問題が発生しているようです – MethodMan

答えて

0

署名バージョンに私の参照を交換トリックをしました。振り返ってみると、エラーメッセージがそれをかなりはっきりと指していたと思います。私は、署名されていないバージョンが使用されているのか、それとも逆のものなのか疑問に思っています。

関連する問題