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.Common
、Google.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>
は、アセンブリバージョンの問題が発生しているようです – MethodMan