67

ここから 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) 呼び出しを呼び出そうとしましたが、次のエラーが発生しました。

エラー : コントラクト '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();
}

これは、サービス参照をコンソール アプリに追加する方法です。

スクリーンショット

何か案は?

4

4 に答える 4

146

あなたの 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>

コードを実行してください。コードが正常に動作することを願っています

于 2013-12-06T11:02:32.083 に答える
34

コントラクト名を次のように定義することで問題が解決すると思います(私のスクリーンショットに基づく):

ServiceReference1.imail_apiSoapClient soapClient = 
new ServiceReference1.imail_apiSoapClient("imail_apiSoap");

現在、エラーは発生しなくなり、API は動作しているように見えます。

于 2013-07-09T10:23:03.193 に答える
2

構成ファイルに両方のクライアント構成を保持する場合は、アプリケーション設定を作成するだけです。

したがって、App.config ファイルには、必要なエンドポイントを指定できる次のエントリが含まれます。

<setting name="EndPoint" serializeAs="String">
    <value>imail_apiSoap</value>
</setting>

したがって、コードで使用できます:

ServiceReference1.imail_apiSoapClient soapClient =
    new ServiceReference1.imail_apiSoapClient(Properties.Settings.Default.EndPoint);
于 2016-02-12T10:53:07.300 に答える