0

以下のコードは、WCFを使用してRESTfulアプリケーションを公開するために使用されました。ここでは、クラスUriTemplateで使用されるオブジェクトを介して入力を渡します。AddDetailsRequest

[ServiceContract]
public interface IMyRestService
{
    [OperationContract(Name = "AddEmployee")]
    [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Xml, UriTemplate = "AddEmpDetails/{objReq}")]
    AddDetailsResponse AddEmpDetails(AddDetailsRequest objReq);
}

クラスAddDetailsRequest

[DataContract(Name = "AddDetailsRequest")]
public class AddDetailsRequest
{
    [DataMember(IsRequired = true, Name = "Name")]
    public string Name { get; set; }
    [DataMember(IsRequired = true, Name = "City")]
    public string City { get; set; }
}

ここで直面した問題は、オブジェクトを通過させることができないことを意味しますUriTemplate。2つのパラメーター(NameとCity)を持つオブジェクトをに渡したいUriTemplate。どうすればこれを達成できますか?

4

1 に答える 1

1

WCF UriTemplateは、複雑なオブジェクトをサポートしていません。この場合、.NETのプライマリタイプを使用する必要があります。それでもメソッドのパラメーターとして複雑なオブジェクトを使用する場合は、UriTemplateを削除し、JSONを使用してオブジェクトを渡す必要があります。本当にUriTemplateを削除したくない場合、最後のオプションは文字列パラメーターを使用することです。

AddDetailsResponse AddEmpDetails(string objEncodedReq);

objEncodedReqシリアル化されたオブジェクト(例ではXMLシリアル化)はどこにあり、Base64を使用してエンコードされています。これは、クライアントレベルから行う必要があります。

于 2012-07-01T14:40:14.810 に答える