6

私は非常に優れたサービススタック ライブラリを使用しており、サービススタック WSDL - Soap11 で VS2010 内から ASP.NET Web サービス参照 (WCF ではない古いスタイル) を生成しようとしています。サービスの WSDL を適切にラップするため。

DTO は AppHost/services とは別のアセンブリ/名前空間 (My.WS.DTO) にあり、要求/応答の命名規則に従っています。Visual Studio を介して参照を生成しようとすると、VS で次のエラーが発生します。

カスタム ツール エラー: WebService/Schema をインポートできません。名前空間 'http://schemas.servicestack.net/types' からバインディング 'BasicHttpBinding_ISyncReply' をインポートできません。操作「GetMyDetails」をインポートできません。要素「http://schemas.servicestack.net/types:GetMyDetails」がありません。

注: GetMyDetails はリストに表示される最初のサービスにすぎないため、これが問題だとは思いません。

EndpointHostConfig.Instance.WsdlServiceNamespace = "My.WS.DTO"; を使用して、AppHost ファイルにアセンブリ名前空間を追加しようとしました。これにより、(上記と同じ) 生成エラーが発生しますが、「http://schemas.servicestack.net/types」ではなく「My.WS.DTO」が使用されます。

おそらく何らかの参照の問題だと思いますが、私が間違っている可能性があることについてのガイダンスは素晴らしいでしょう. 乾杯

4

3 に答える 3

3

これがまだ問題であるかどうかはわかりませんが、同様の問題が発生し、 SOAPサポートのwikiページで説明されているように、DTOの1つに属性を[DataContract]付けていなかったことがわかりました。これらをDTOに追加すると、WSDLのtypeセクションで宣言されます。[DataMember]

于 2013-03-21T08:57:23.480 に答える
1

これは古い質問であることは承知していますが、最近 REST のサポートを拒否したサードパーティの SOAP サポートを ServiceStack の実装に追加する必要があったため、この問題がまだ残っている他の人に関連する可能性があります。

私はあなたが抱えていたのと同じ問題を抱えていました:

バインディング 'BasicHttpBinding_ISyncReply' をインポートできません...

また、mickfold が以前に回答したように、[DataContract][DataMember]をクラス定義とそのプロパティに追加する必要がありました。

しかし、エラーが消える前に、AssemblyInfo.cs ファイルに以下を追加する必要もありました。

[assembly: ContractNamespace("http://schemas.servicestack.net/types", ClrNamespace = "My Type Namespace")]

上記の元の質問に基づいてMy.WS.DTOになる型が宣言されている名前空間ごとに、これらの行のいずれかが必要になると思います。

于 2015-07-14T17:28:36.647 に答える