0

WCFサービスコントラクトにバージョン管理の問題があり、操作のために呼び出される多くのエンドポイントの1つで、コントラクトから1つのメソッドが欠落しています。

私の質問は、コマンドを呼び出す前に、クライアントでコマンドが使用可能であることを確認するにはどうすればよいですか?

私は試した:

  foreach (var od in proxy.Endpoint.Contract.Operations)
  {
    if (od.Name == "MyMethodName")
    {
      hasMethod = true;
      break;
    }
  }

残念ながら、これは呼び出し元のアプリからのコントラクトを使用しており、エンドポイント自体の実装については実際には説明していません。その結果、エンドポイントがコマンドの実装に失敗した場合でも、trueを返します。

4

1 に答える 1

2

試してみるまで、実際にはわかりません。あなたが持っているのは実装されたコントラクトのプロキシですが、それを作成/生成してからサーバー側にあるものが変更されている可能性があります。

これがhttp/httpwsの実装であると仮定すると、サービス参照を呼び出して確認し、wsdlファイルをダウンロードできると思います。これにより、サポートされているメソッドなどがわかります。これから発生する問題は、メソッドの名前が同じであっても、戻り値のタイプとパラメーターをチェックして、それが同じメソッドであり、で呼び出すことができることを確認する必要があることです。あなたが現在持っているプロキシ。

WCFでのバージョン管理に関するリンクは次のとおりです。http:
//msdn.microsoft.com/en-us/library/ms731060.aspx

WCFのバージョン管理のベストプラクティスに関するリンクは次のとおり
です。WCFを使用してサービスをバージョン管理するためのベストプラクティス?

于 2010-05-18T22:48:15.480 に答える