ここからSOAP APIをテストする単純なc#コンソールアプリケーションを作成しようとしています: https://www.imailtest.co.uk/webservice/imail_api.asmx?wsdl (または https://www.imailtest.co.uk/webservice/imail_api.asmx apiメソッドを表示)
そこで、このリファレンスを追加し、2つのAPIメソッド(AuthentiacateとProcessPrintReadyPDF)を呼び出して、このエラーを取得しようとしました:
エラー:契約のthに対する複数のエンドポイント構成が見つかったため、契約 'ServiceReference1.imail_ apiSoap'のエンドポイント構成セクションをロードできませんでした。優先エンドポイント構成セクションを名前で指定してください。
これが私のC#コードです。
static void Main(string[] args)
{
// Anticipate Error
try
{
// Generate SOAP Client
ServiceReference1.imail_apiSoapClient soapClient = new ServiceReference1.imail_apiSoapClient();
// Login
Console.WriteLine("Authenticating");
soapClient.Authenticate(iMailUser, iMailPass);
// Proceed If PDF File Exists
if (File.Exists(PDFFile))
{
// Upload PDF File To iMail
Console.WriteLine("Uploading PDF File");
soapClient.ProcessPrintReadyPDF(File.ReadAllBytes(PDFFile), "", true);
// Test Complete
Console.WriteLine("Done");
}
else
{
// Log Error
Console.WriteLine("PDF File [{0}] Does Not Exists", PDFFile);
}
}
catch (Exception ex)
{
// Log Error
Console.WriteLine("Error : "+ ex.Message);
}
// End Test
Console.WriteLine("Press any key to continue ...");
Console.ReadKey();
}
これは、コンソールアプリにサービス参照を追加する方法です。
何か案は?
このような契約名を定義することで問題が解決すると信じています(スクリーンショットに基づいて):
ServiceReference1.imail_apiSoapClient soapClient =
new ServiceReference1.imail_apiSoapClient("imail_apiSoap");
これで、エラーが発生しなくなり、APIが機能しているように見えます。
あなたのApp.configでは、このようなものを見ることができます
<client>
<endpoint address="https://www.imailtest.co.uk/webservice/imail_api.asmx "
binding="basicHttpBinding" bindingConfiguration="xxxxxxxxxx"
contract="xxxxxxxxxx" name="xxxxxxxxxxxxx" />
<endpoint address="https://www.imailtest.co.uk/webservice/imail_api.asmx"
binding="customBinding" bindingConfiguration="xxxxxxxxxxxxx"
contract="xxxxxxxxxxx" name="xxxxxxxxxxxxx" />
</client>
2番目のエンドポイントを削除すると、次のようになります。
<client>
<endpoint address="https://www.imailtest.co.uk/webservice/imail_api.asmx "
binding="basicHttpBinding" bindingConfiguration="xxxxxxxxxxxxx"
contract="xxxxxxxxxxxxxx" name="xxxxxxxxxxxxxxx" />
</client>
ここでコードを実行し、コードが正常に動作することを願って
構成ファイルに両方のクライアント構成を保持する場合は、アプリケーション設定を作成するだけです。
したがって、App.configファイルには、必要なエンドポイントを指定できる次のエントリが含まれます。
<setting name="EndPoint" serializeAs="String">
<value>imail_apiSoap</value>
</setting>
あなたのコードで使用できます:
ServiceReference1.imail_apiSoapClient soapClient =
new ServiceReference1.imail_apiSoapClient(Properties.Settings.Default.EndPoint);