14

WCF テスト クライアントを使用して、構築した WCF サービスをテストしようとしています。

このサービスには、「SubmitRequest」という 1 つのメソッドがあります。

[OperationContract]
Response SubmitRequest(Request request);

WCF テスト クライアントをロードすると、メソッドがグレー表示され、「この操作は WcfLibrary.Objects.Request 型を使用しているため、WCF テスト クライアントではサポートされていません」というメッセージが表示されます。

以下は型定義です。誰かが何か間違っていると思いますか?

[DataContract]
public class Request
{
    [DataMember]
    public string LoanNumber { get; set; }

    [DataMember]
    public string ClientCode { get; set; }

    [DataMember]
    public Region Region { get; set; }

    [DataMember]
    public RequestType RequestType { get; set; }

    [DataMember]
    public List<RequestParameter> RequestParameters { get; set; }

    [DataMember]
    public List<MspWebCallType> MspWebCallsForXmlRequest { get; set; }

    [DataMember]
    public Hashtable XmlRequestParameters { get; set; }

    public Request(string loanNumber, string clientCode, Region region, RequestType requestType, List<RequestParameter> requestParameters)
    {
        LoanNumber = loanNumber;
        ClientCode = clientCode;
        Region = region;
        RequestType = requestType;
        RequestParameters = requestParameters;
    }
}

[DataContract]
public class MspWebCallType
{
    [DataMember]
    public string WebService { get; set; }
    [DataMember]
    public string Operation { get; set; }
    [DataMember]
    public string Version { get; set; }
    [DataMember]
    public Hashtable Parameters { get; set; }
    [DataMember]
    public Msp.FavReadViews FAVReadViewIndicator { get; set; }
    [DataMember]
    public Msp.DsReadIndicators DSReadInidicator { get; set; }        
}

[DataContract]
public enum Region 
{ 
        [EnumMember]
        P2,
        [EnumMember]
        PROD 
}

[DataContract]
public enum RequestType
{
    [EnumMember]
    None,
    [EnumMember]
    XmlRequest,
    [EnumMember]
    SomeOtherRequestType
}

[DataContract]
public struct RequestParameter
{
    [DataMember]
    public string ParameterName { get; set; }

    [DataMember]
    public string ParameterValue { get; set; }
}

ありがとう。

EDIT w/ answer...
タイプ MspWebCallType にタイプ Hashtable のプロパティがあったため、操作は WCF テスト クライアント経由で利用できませんでした。このプロパティを削除すると、問題が修正されました。みんなの助けに感謝します。

4

4 に答える 4

27

以下は、WCF テスト クライアントでサポートされていない機能の一覧です。

  • 型: Stream、Message、XmlElement、XmlAttribute、XmlNode、関連する XmlSchemaProviderAttribute 属性を含む IXmlSerializable インターフェイスを実装する型、および XDocument 型と XElement 型、および ADO.NET DataTable 型。

  • 二重契約。

  • 取引。

  • セキュリティ: CardSpace 、証明書、およびユーザー名/パスワード。

  • バインディング: WSFederationbinding、任意の Context バインディングおよび Https バインディング、WebHttpbinding (Json 応答メッセージのサポート)。

出典: MSDN

チェックMsp.FavReadViewsMsp.DsReadIndicatorsて、準拠していることを確認します。

于 2011-12-19T21:54:53.200 に答える
0

これRequestは、パブリックなノンパラメトリックコンストラクターが必要なためである可能性があります。

于 2011-12-20T17:20:47.430 に答える
0

これは現在、このエラーに対する Google での最初の結果であるため、ここで回答します。

@Igby Largeman の回答に加えて、操作またはデータ コントラクトのどこかでシリアル化できない型を使用した場合にも、このエラーが発生します。

.NET の Exception クラスの例を見てみましょう...

私のチームの開発者が、例外メッセージを手動で DTO に入れるのではなく、DTO を介してサービスのクライアントに Exception オブジェクトを送り返すことを選択したケースがありました。Visual Studio は、ビルド時にクラスがシリアル化できないことを警告しません (実際にはそうすべきです)。実行時にのみ失敗します。

したがって、このエラーが発生し、上記の回答を除外した場合は、コントラクトと DTO で使用されている型を確認してください。シリアル化できないものが原因である可能性があります。

これで誰かの時間を節約できることを願っています。

于 2016-10-06T18:53:46.043 に答える