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 个参数(名称和城市)的对象传递给UriTemplate. 我怎样才能做到这一点?

4

1 回答 1

1

WCF UriTemplate 不支持复杂对象。在这种情况下,您必须坚持使用 .NET 中的主要类型。如果您仍想使用复杂对象作为方法的参数,则必须删除 UriTemplate 并使用 JSON 传递您的对象。如果您真的不想删除 UriTemplate 您的最后一个选择是使用字符串参数:

AddDetailsResponse AddEmpDetails(string objEncodedReq);

您的序列化对象在哪里objEncodedReq(例如 XML 序列化)并使用 Base64 编码。您必须从客户端级别执行此操作。

于 2012-07-01T14:40:14.810 回答