2

さて、条件に基づいて別の WSDL を生成したいと思います。つまり、一部のメソッドを非表示にして、すべての複合型を保持し、一部のメソッドを表示または非表示にするだけです。

私の質問

URL でいくつかのパラメーターを取得して wsdl を取得し、そのパラメーターを評価してカスタム WSDL をレンダリングする方法はありますか?

例 host.dev/myservice.wsdl?param=role1 およびリフレクションを使用して一部のプロパティを削除し、それらのメソッドを実行時に非表示にします。

私がサービスに多くのクライアントを持っていて、wsdlをフェッチしてクライアントを消費しないようにするために使用する問題は、オリジンを指すwsdlを取得するだけで、すべてのメソッドが必要なわけではありません。

前もって感謝します。

4

2 に答える 2

2

いいえ、それを行う方法はないと思います。WSDL に使用しないものがあっても通常は問題ありませんが、なぜこれが必要なのですか? そうする場合は、それを他のサービスに分割して、個別の WSDL を持つことがおそらく理にかなっているでしょう。クライアントがすべての WSDL を必要とする場合、それらすべてを参照できます。

于 2013-11-15T12:51:50.827 に答える
1

はい、可能です。実際、.net の WSDL ジェネレーターは、型のメソッドを処理することによって機能します。私はかつて、あらゆるオブジェクトを本格的な Web サービスとして公開する Web サービス ラッパーにオブジェクトを作成したことがあります (動的 Web サービスは機能の名前でした)。コードは私の以前の雇用主のものであるため、ここでコード例を示すことはできませんが、私の記憶からいくつかの指示を与えることができます.

  1. WSDL ジェネレーターは、実際には型を渡すことで呼び出すことができるクラスです。
  2. クラス自体は封印されていないのでType、そこから継承できます。カスタムTypeクラスは、WSDL ジェネレーターの名前とパラメーターを提供します。

その後、どのメソッドを提供するかはあなたの想像力次第です。実際にはそれ以上の実装を行いました。ディクショナリのキーをプロパティ名として公開することでオンザフライで型を作成することにより、ディクショナリのようなオブジェクトを Web サービスのデータ コントラクトに変換する別のコードを作成しました。何度も言いますが、すべてはあなたの想像力次第です。

于 2013-11-20T15:57:51.070 に答える