0

私はこのWCFサービスにまったく慣れていないので、ガイドラインをいただければ幸いです。

特定のデバイスのネットワークステータスをチェックするコードを含む大規模なプロジェクトを受け取りました。上司から、TCPSocketの作成を検索し、ソケットの特定のオプションを変更するように言われました。

ネットワークの状態をチェックする関数はReqDDCNetworkStatusです。当然、私はコードの出所を検索し、サービスリファレンスの下にこのインターフェイスを見つけました。

public interface LGeDDC
{
    [System.ServiceModel]
    [System.ServiceModel.XmlSerializerFormatAttribute()]
    [return: System.ServiceModel.MessageParameterAttribute(Name="result")]
    string ReqDDCNetworkStatus(out string status);
}

このファイルはReferences.csと呼ばれ、プログラムと問題のデバイス間の通信に使用されるWSDL(SOAP)ファイルでsvcutil.exeを実行して生成されたと思います。

これは、呼び出される実際の関数を持つクラスです。

namespace XrayEngines.DDCService
{
    public partial class LGeDDCClient : System.ServiceModel.ClientBase<LGeDDC>, LGeDDC
    {
        public LGeDDCClient(string endpointConfigurationName, string remoteAddress) : 
                base(endpointConfigurationName, remoteAddress)
        {
        }

        public string ReqDDCNetworkStatus(out string status)
        {
            return base.Channel.ReqDDCNetworkStatus(out status);
        }
    }
}

したがって、関数は次のように呼び出されます。

try
{
    for (int i = 0; i < p.Length; i++)
    {
        v = ddc.ReqDDCNetworkStatus(out r);
        writeMessage("v:" + v + " , r:" + r);
    }
}
catch (Exception e)
{
    writeMessage("Network Exception Occurred: ."+e.ToString());
}

そして、私は道に迷っています。文字通り、クライアントとサーバー間の接続を確立するものは何も表示されませんが、プログラムは機能します。このように接続が確立された経緯を誰かに説明していただければ幸いです。

4

2 に答える 2

2

魔法は次の2行にあります。

 public partial class LGeDDCClient : System.ServiceModel.ClientBase<LGeDDC>

return base.Channel.ReqDDCNetworkStatus(out status);

プロキシクラスは、メッセージの実際の送信(リモート呼び出しの実行)を実装するクラスであるClientBaseから継承します。

于 2012-06-14T07:37:25.160 に答える
1

基本クラスSystem.ServiceModel.ClientBaseは、すべての接続処理を実行します。サービスのURLとその他のパラメーターのみを設定します。これは通常、構成ファイルを使用して行われます。構成ファイルでサービスエンドポイント、パラメーターを確認してください。

于 2012-06-14T07:38:47.880 に答える