如何在WCF REST服务中传递URL?

时间:2014-06-12 05:54:19

标签: c# wcf rest

我正在创建以下WCF REST服务:

我的界面:

namespace WcfService1
{   
    [ServiceContract]
    public interface IService1
    {
        [OperationContract]
        [WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "/InsertData/{data}")]
        string InsertData(Data data);
    }

    [DataContract]
    public class Data
    {
        [DataMember]
        public string Name { get; set; }
        [DataMember]
        public string Email { get; set; }
        [DataMember]
        public string Category { get; set; }
        [DataMember]
        public string Mobile { get; set; }
        [DataMember]
        public string Message { get; set; }
    }
}

现在我如何传递URL中的值。如果我正在运行当前的应用程序,则会出现以下错误:

enter image description here

1 个答案:

答案 0 :(得分:1)

您正在尝试调用InsertData方法,该方法需要将复杂的对象数据传递给它,并使用Get方法执行此操作。通常,这是一个坏主意,因为Get请求没有用于存储序列化Data对象的正文内容 - 而在Get中,您只能将数据作为查询字符串传递。对于InsertData方法,正确选择http方法将是Put。如果要使用浏览器准备方法(如Get(int id))测试方法,请将属性UriTemplate指定为“data / Get / {id}”,然后从浏览器调用yourserviceurl / Service1.svc / data / Get / 1