从C#将参数传递给WCF REST

时间:2014-07-22 10:05:25

标签: c# wcf rest

我必须将参数传递给我创建的WCF服务。当我试图将它作为QueryString传递时,它抛出了我" 404 Not found"。

//代码:

string Service = ""http://localhost:58092/Service1.svc/DataService/LoadAllColumnData?Id=1";
WebRequest wreq = WebRequest.Create(Service);

WebResponse wres = wreq.GetResponse();

DataContractSerializer coll = new DataContractSerializer(typeof(DataServiceProxy.GdColumns));                      
var arrProd = coll.ReadObject(wres.GetResponseStream());

// WCF代码:

[ServiceContract]
public interface IDataService
{             
     [OperationContract]
     [WebGet(BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "LoadAllColumnData/{Id}")]
     IList<GdColumns> LoadAllColumnData(string Id);
}

怎么做?

1 个答案:

答案 0 :(得分:2)

字符串服务中指定查询字符串 LoadAllColumnData?Id = 1 ...但是在 UriTemplate =&#34; LoadAllColumnData / {Id}中&#34; 你没有查询字符串...你已经定义了URL将保存参数。

按如下方式更改您的服务网址,它应该有效...

string Service = ""http://localhost:58092/Service1.svc/DataService/LoadAllColumnData/1";

使用查询字符串...

[WebInvoke(Method = "GET",
    BodyStyle = WebMessageBodyStyle.WrappedRequest,
    UriTemplate = "LoadAllColumnData?Id={Id}")]
IList<GdColumns> LoadAllColumnData(string Id);

使用网址...

[WebInvoke(Method = "GET",
    BodyStyle = WebMessageBodyStyle.WrappedRequest,
    UriTemplate = "LoadAllColumnData/{Id}")]
IList<GdColumns> LoadAllColumnData(string Id);

编辑:Derek指出,将POST更改为GET。