1

そのため、WCF サービス リファレンスと、対応するReference.cs生成されたプロキシ クラスを含む、継承したプロジェクトがあります。既存のプロキシ クラスでは、定義を確認できますenum

[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
[System.Runtime.Serialization.DataContractAttribute(Name="MyRecord.ColorAction", Namespace="http://schemas.datacontract.org/2004/07/DocumentsDataAccess.DataClasses")]
public enum ColorAction : int {

    [System.Runtime.Serialization.EnumMemberAttribute()]
    NONE = 0,

    [System.Runtime.Serialization.EnumMemberAttribute()]
    GREEN = 1,

    [System.Runtime.Serialization.EnumMemberAttribute()]
    RED = 2,

}

対応する WCF コードは次のとおりです。

[DataContract]
public enum ColorAction
{
    [EnumMember]
    NONE = 0,
    [EnumMember]
    GREEN = 1,
    [EnumMember]
    RED = 2,
}

wsdlブラウザで を見て、これが公開されていることを確認できます。リストされているenum型を確認できます。

ただし、「更新」または「サービス参照の追加」(削除して再追加することによる新しい参照として) のいずれかを行うと、これenumと他の多くのメソッドおよび列挙型が失われます。プロキシ クラスのダウンロードと作成は成功しているため、エラーの問題ではありません。

Add Service Referenceダイアログの「詳細」設定をすべて調整してみましたが、違いはないようです。最終的な結果は、既存のコードが欠落している他のコードを呼び出して使用できることを期待しているためenums、サービス参照を更新または再追加した後にコードがコンパイルされないことです。

すでにチェックを外してみましReuse types in all referenced assembliesたが、結果は変わりませんでした。

私が見ているプロキシ クラスを作成した元の人は、ウィザードを使用せ、代わりAdd Service Referenceに直接使用したのでしょうか。SvcUtil.exe私は以前にそれを使用しましたが、WCF サービスが公開しているすべてのものを生成するために使用する必要があるのは不思議ですか? サービスが公に提供するすべてのものを取得するには、どのスイッチが必要ですか? (参考までに、.NET 4.0 をターゲットにしています)。

4

1 に答える 1

1

Enum クラスのホスティング WCF サービス コードを投稿できますか?

Add Service Reference完全な参照ファイルSO-SvcUtil.exe と Add Reference を作成できない場合があります。SvcUtil.exe代わりに使用された可能性があります。それを試して、より良いプロキシが構築されるかどうかを確認してください。

于 2013-10-31T14:53:03.637 に答える