2017-06-09 3 views
0

プロジェクトで実行時にサービス参照エンドポイントが見つかりません。私はそれが私のStartup.csの誤った注射のためだと信じています。私は設定のappsettings.jsonとStartup.csメソッドに慣れていませんが、Startup.csでクラスライブラリとDbcontextをスコープしています。それが違いを行う場合AppSettings.jsonとStartup.csを使用した.NETへのサ​​ービス参照の注入

注意、このVSのソリューションは、クラスライブラリおよび.NET/angular2 Webプロジェクトが含まれています。サービスへの呼び出しは、角度のあるWebサイトからWeb APIに開始され、実際の処理が行われるクラスライブラリのメソッドを呼び出します。

サービス参照 "Cyber​​sourceTrxnProcessor"は、自分のクラスライブラリプロジェクト(画像参照)に表示され、ITransactionProcessorは公開され、アクセス可能です(つまりコードヒントは完全に機能します)。 Webプロジェクトでは、ソリューションエクスプローラにサービスリファレンスがありません。

enter image description here

私は参照を追加すると、セクションはapp.configファイルに追加された(下記参照)と私は、Webプロジェクトのweb.configファイルにそれらをコピーしました。

appsettingsとStartupでweb.configの設定を再作成するにはどうすればよいですか?

System.ServiceModel.EndpointAddress theendpoint = new System.ServiceModel.EndpointAddress("https://ics2wstesta.ic3.com/commerce/1.x/transactionProcessor"); 
TransactionProcessorClient proc = new TransactionProcessorClient("ITransactionProcessor", theendpoint); 
:私はまた、手動直前同じエラー結果をエンドポイントを定義しようとしている

TransactionProcessorClient proc = new TransactionProcessorClient("ITransactionProcessor"); 

試験支払いを処理しようとすると、コードのこの行は例外をスロー

これはエラーです。

お支払いの処理中に例外が発生しました。もう一度お試しください。 「ITransactionProcessor」という名前のエンドポイント要素を見つけられず、ServiceModelクライアント構成セクションで「Cyber​​sourceTrxnProcessor.ITransactionProcessor」という名前を取得できませんでした。これは、アプリケーションで設定ファイルが見つからなかったか、またはこの名前に一致するエンドポイント要素がクライアント要素内に見つからなかった可能性があります。ここで

私は、Visual Studioのプロジェクトにサービス参照を追加したときに生成、設定ファイルは次のようになります(とも古いMVCプロジェクトに何があるかと一致する):

<system.serviceModel> 
    <bindings> 
     <basicHttpBinding> 
      <binding name="ITransactionProcessor"> 
      <security mode="TransportWithMessageCredential" /> 
      </binding> 
      <binding name="ITransactionProcessor1" /> 
     </basicHttpBinding> 
    </bindings> 
    <client> 
     <endpoint address="https://ics2wstesta.ic3.com/commerce/1.x/transactionProcessor" binding="basicHttpBinding" bindingConfiguration="ITransactionProcessor" 
    contract="CybersourceTrxnProcessor.ITransactionProcessor" name="portXML" /> 
    </client> 
</system.serviceModel> 

これがされappsettings.json:

"ITransactionProcessor": { 
    "security": { "mode": "TransportWithMessageCredential" }, 
    "client": { 
     "endpoint": { 
      "address": "https://ics2wstesta.ic3.com/commerce/1.x/transactionProcessor", 
      "binding": "basicHttpBinding", 
      "bindingConfiguration": "ITransactionProcessor", 
      "contract": "CybersourceTrxnProcessor.ITransactionProcessor", 
      "name": "portXML" 
      } 
    } 
} 

これは私がStartup.csに持​​っているものである(もセキュリティモードを設定する必要がありますTransportWithMessageCredential)Cyber​​source社のドキュメントで規定され:ちょうどFYI

services.AddScoped<ITransactionProcessor>(provider => { 
      var client = new TransactionProcessorClient();    
      client.Endpoint.Address = new EndpointAddress(Configuration["ITransactionProcessor:client:endpoint:address"]); 
      client.Endpoint.Contract = new System.ServiceModel.Description.ContractDescription(Configuration["ITransactionProcessor:client:endpoint:contract"]); 
      client.Endpoint.Binding = new System.ServiceModel.BasicHttpBinding(); 
      client.Endpoint.Name = "portXML"; 
      return client; 
     }); 

答えて

0

、私は最終的にこれを考え出しました。私が持っていたものはすべて、一つの小さなものを除いて正しかった(それはほとんどいつも何かに簡単には及ばない)。エラーは実際には必要なものを正確に教えてくれました。私は単に自分のappsettingsを変更する必要があった。

"name": "ITransactionProcessor" 

"name": "portXML" 

:そうのようなJSON

関連する問題