8

を使用wsdl.exe /l:CS /serverInterfaceして、WDSLドキュメントからC#インターフェイスを生成しました。そのインターフェイスをWCFクラスに実装しました。結果のサービスはローカルで実行されます。

http://localhost:51454/TapasSim.svc

これはデフォルトのサイトを示しています。?wsdlURLに追加すると、問題が発生します。

http://localhost:51454/TapasSim.svc?wsdl

ここに画像の説明を入力してください

私が期待したものとは異なり、このリンクはWDSLドキュメントを返しません!代わりに、がなくても取得できる正確なWebページを指し示します?wsdl。その結果、Webサービスを参照できません。実行すると、次のsvcutil.exeエラーが発生します。

クライアントを生成しようとした場合、これはメタデータドキュメントに有効なコントラクトまたはサービスが含まれていないか、すべてのコントラクト/サービスが/referenceアセンブリに存在することが検出されたことが原因である可能性があります。すべてのメタデータドキュメントをツールに渡したことを確認します。

しかし、私はそのエラーがへの応答の欠如と同じ原因を持っていると思います?wsdl

WCF.svcサービスがWSDLを生成しない原因は何ですか?

4

2 に答える 2

8

結局のところ、問題は 2 つのテクノロジーを混在させることでした。 wdsl.exeWCFより前の古い「Web参照」に属します。新しいツールsvcutil.exeは、WCF の「サービス リファレンス」インターフェイスを生成するためのものです。

何が起こったのかというと、WCF は属性を探しまし[ServiceContract][OperationContract]。何も見つからなかったとき、黙って何もしませんでした。

控えめに言っても、この状態を静かに抑制することは厄介です。のようなエラーNo service with [ServiceContract] attribute foundは本当に役に立ちました。

を手動で追加することもできますが[ServiceContract]、「サービス参照」と「Web 参照」の半分が残ることに注意してください。結果はおそらくうまくいきません。

于 2013-01-29T19:51:46.063 に答える