9

WCF3.5とChristianWeyerのFlatWsdlEndpointBehaviorを使用して、ディレクティブなしでWCFサービス用の単一のフラットWSDLファイルを取得できました<import>

WCF 4では、これは何らかの理由で機能しなくなりました。

WcfExtras動作拡張機能の使用を含め、多くのブログエントリで説明されているすべてを試しました。

それらはすべてChrを参照しています。WeyersソリューションまたはWcfExtrasをお勧めします。また、バインディング、ServiceContract、およびServiceBehaviorに同じ名前空間を指定していることを確認しました。

カスタムサービスホストでは、FlatWsdlExtensionが挿入されようとしているとき、Description.Endpointsコレクションは常に空です。これまでのところ、アドレスの有無にかかわらず、サービスエンドポイントを構成しようとしましたが、運がありませんでした。

WCF 4サービス用の単一のフラットWSDLを取得するには、何をする必要がありますか?

答えてくれてありがとう。

4

2 に答える 2

4

私はこの正確な問題を抱えていました。今日何度か試みた後、私はついに次のことを行うことでそれを機能させることができました:

このブログ投稿を完全に読んでください。

ServiceContract、ServiceBehavior、およびbindingNamespace(.config-> services / service / endpointセクション)でまったく同じ名前空間属性を指定していることを確認してください。

私がかつて遭遇したこの問題に注意してください。

このzipファイルをダウンロードし、FlatWsdl / Extensions:FlatWsdl.cs、FlatWsdlServiceHost.cs、およびFlatWsdlServiceHostFactory.csをプロジェクトのどこかに含めます。

.svcファイルのServiceHostFactory属性で、ご使用のバージョンのFlatWsdlServiceHostFactory.cs(もちろんマイナス.cs)の完全修飾クラス名を指定してください。

私は今日、とりわけWcfExtrasを試しました-多かれ少なかれそれにあるかもしれませんが、これらのステップはついに私を動かしました。幸運を!

[編集]

于 2011-11-08T21:43:00.430 に答える
2

遅い答え、それが誰かを助けることを願っています。

同じ問題がありましたが、サービスエンドポイントに動作を手動で追加することで解決しました。

   FlatWsdlServiceHost serviceHost = new FlatWsdlServiceHost(typeof(MyService));

   ServiceEndpoint endp = serviceHost.AddServiceEndpoint(typeof(IMyService), new BasicHttpBinding(), "MyService");
   endp.Behaviors.Add(new FlatWsdl());
于 2011-09-19T14:05:58.887 に答える